git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git]
/
fs
/
xfs
/
xfs_trans.c
diff --git
a/fs/xfs/xfs_trans.c
b/fs/xfs/xfs_trans.c
index
8d056ce
..
ee2721e
100644
(file)
--- a/
fs/xfs/xfs_trans.c
+++ b/
fs/xfs/xfs_trans.c
@@
-24,7
+24,6
@@
#include "xfs_trans.h"
#include "xfs_sb.h"
#include "xfs_ag.h"
#include "xfs_trans.h"
#include "xfs_sb.h"
#include "xfs_ag.h"
-#include "xfs_dir.h"
#include "xfs_dir2.h"
#include "xfs_dmapi.h"
#include "xfs_mount.h"
#include "xfs_dir2.h"
#include "xfs_dmapi.h"
#include "xfs_mount.h"
@@
-33,7
+32,6
@@
#include "xfs_bmap_btree.h"
#include "xfs_alloc_btree.h"
#include "xfs_ialloc_btree.h"
#include "xfs_bmap_btree.h"
#include "xfs_alloc_btree.h"
#include "xfs_ialloc_btree.h"
-#include "xfs_dir_sf.h"
#include "xfs_dir2_sf.h"
#include "xfs_attr_sf.h"
#include "xfs_dinode.h"
#include "xfs_dir2_sf.h"
#include "xfs_attr_sf.h"
#include "xfs_dinode.h"
@@
-236,11
+234,8
@@
xfs_trans_alloc(
xfs_mount_t *mp,
uint type)
{
xfs_mount_t *mp,
uint type)
{
- fs_check_frozen(XFS_MTOVFS(mp), SB_FREEZE_TRANS);
- atomic_inc(&mp->m_active_trans);
-
- return (_xfs_trans_alloc(mp, type));
-
+ vfs_wait_for_freeze(XFS_MTOVFS(mp), SB_FREEZE_TRANS);
+ return _xfs_trans_alloc(mp, type);
}
xfs_trans_t *
}
xfs_trans_t *
@@
-250,12
+245,9
@@
_xfs_trans_alloc(
{
xfs_trans_t *tp;
{
xfs_trans_t *tp;
- ASSERT(xfs_trans_zone != NULL);
- tp = kmem_zone_zalloc(xfs_trans_zone, KM_SLEEP);
+ atomic_inc(&mp->m_active_trans);
- /*
- * Initialize the transaction structure.
- */
+ tp = kmem_zone_zalloc(xfs_trans_zone, KM_SLEEP);
tp->t_magic = XFS_TRANS_MAGIC;
tp->t_type = type;
tp->t_mountp = mp;
tp->t_magic = XFS_TRANS_MAGIC;
tp->t_type = type;
tp->t_mountp = mp;
@@
-263,8
+255,7
@@
_xfs_trans_alloc(
tp->t_busy_free = XFS_LBC_NUM_SLOTS;
XFS_LIC_INIT(&(tp->t_items));
XFS_LBC_INIT(&(tp->t_busy));
tp->t_busy_free = XFS_LBC_NUM_SLOTS;
XFS_LIC_INIT(&(tp->t_items));
XFS_LBC_INIT(&(tp->t_busy));
-
- return (tp);
+ return tp;
}
/*
}
/*
@@
-303,7
+294,7
@@
xfs_trans_dup(
tp->t_blk_res = tp->t_blk_res_used;
ntp->t_rtx_res = tp->t_rtx_res - tp->t_rtx_res_used;
tp->t_rtx_res = tp->t_rtx_res_used;
tp->t_blk_res = tp->t_blk_res_used;
ntp->t_rtx_res = tp->t_rtx_res - tp->t_rtx_res_used;
tp->t_rtx_res = tp->t_rtx_res_used;
-
PFLAGS_DUP(&tp->t_pflags, &ntp->t_pflags)
;
+
ntp->t_pflags = tp->t_pflags
;
XFS_TRANS_DUP_DQINFO(tp->t_mountp, tp, ntp);
XFS_TRANS_DUP_DQINFO(tp->t_mountp, tp, ntp);
@@
-335,14
+326,11
@@
xfs_trans_reserve(
uint logcount)
{
int log_flags;
uint logcount)
{
int log_flags;
- int error;
- int rsvd;
-
- error = 0;
- rsvd = (tp->t_flags & XFS_TRANS_RESERVE) != 0;
+ int error = 0;
+ int rsvd = (tp->t_flags & XFS_TRANS_RESERVE) != 0;
/* Mark this thread as being in a transaction */
/* Mark this thread as being in a transaction */
-
PFLAGS_SET_FSTRANS(&tp->t_pflags
);
+
current_set_flags_nested(&tp->t_pflags, PF_FSTRANS
);
/*
* Attempt to reserve the needed disk blocks by decrementing
/*
* Attempt to reserve the needed disk blocks by decrementing
@@
-353,7
+341,7
@@
xfs_trans_reserve(
error = xfs_mod_incore_sb(tp->t_mountp, XFS_SBS_FDBLOCKS,
-blocks, rsvd);
if (error != 0) {
error = xfs_mod_incore_sb(tp->t_mountp, XFS_SBS_FDBLOCKS,
-blocks, rsvd);
if (error != 0) {
-
PFLAGS_RESTORE_FSTRANS(&tp->t_pflags
);
+
current_restore_flags_nested(&tp->t_pflags, PF_FSTRANS
);
return (XFS_ERROR(ENOSPC));
}
tp->t_blk_res += blocks;
return (XFS_ERROR(ENOSPC));
}
tp->t_blk_res += blocks;
@@
-426,9
+414,9
@@
undo_blocks:
tp->t_blk_res = 0;
}
tp->t_blk_res = 0;
}
-
PFLAGS_RESTORE_FSTRANS(&tp->t_pflags
);
+
current_restore_flags_nested(&tp->t_pflags, PF_FSTRANS
);
- return
(error)
;
+ return
error
;
}
}
@@
-819,7
+807,7
@@
shut_us_down:
if (commit_lsn == -1 && !shutdown)
shutdown = XFS_ERROR(EIO);
}
if (commit_lsn == -1 && !shutdown)
shutdown = XFS_ERROR(EIO);
}
-
PFLAGS_RESTORE_FSTRANS(&tp->t_pflags
);
+
current_restore_flags_nested(&tp->t_pflags, PF_FSTRANS
);
xfs_trans_free_items(tp, shutdown? XFS_TRANS_ABORT : 0);
xfs_trans_free_busy(tp);
xfs_trans_free(tp);
xfs_trans_free_items(tp, shutdown? XFS_TRANS_ABORT : 0);
xfs_trans_free_busy(tp);
xfs_trans_free(tp);
@@
-846,7
+834,7
@@
shut_us_down:
*/
nvec = xfs_trans_count_vecs(tp);
if (nvec == 0) {
*/
nvec = xfs_trans_count_vecs(tp);
if (nvec == 0) {
- xfs_force_shutdown(mp,
XFS
_LOG_IO_ERROR);
+ xfs_force_shutdown(mp,
SHUTDOWN
_LOG_IO_ERROR);
goto shut_us_down;
} else if (nvec <= XFS_TRANS_LOGVEC_COUNT) {
log_vector = log_vector_fast;
goto shut_us_down;
} else if (nvec <= XFS_TRANS_LOGVEC_COUNT) {
log_vector = log_vector_fast;
@@
-884,7
+872,7
@@
shut_us_down:
* had pinned, clean up, free trans structure, and return error.
*/
if (error || commit_lsn == -1) {
* had pinned, clean up, free trans structure, and return error.
*/
if (error || commit_lsn == -1) {
-
PFLAGS_RESTORE_FSTRANS(&tp->t_pflags
);
+
current_restore_flags_nested(&tp->t_pflags, PF_FSTRANS
);
xfs_trans_uncommit(tp, flags|XFS_TRANS_ABORT);
return XFS_ERROR(EIO);
}
xfs_trans_uncommit(tp, flags|XFS_TRANS_ABORT);
return XFS_ERROR(EIO);
}
@@
-926,7
+914,7
@@
shut_us_down:
/*
* Mark this thread as no longer being in a transaction
*/
/*
* Mark this thread as no longer being in a transaction
*/
-
PFLAGS_RESTORE_FSTRANS(&tp->t_pflags
);
+
current_restore_flags_nested(&tp->t_pflags, PF_FSTRANS
);
/*
* Once all the items of the transaction have been copied
/*
* Once all the items of the transaction have been copied
@@
-1148,7
+1136,7
@@
xfs_trans_cancel(
*/
if ((tp->t_flags & XFS_TRANS_DIRTY) && !XFS_FORCED_SHUTDOWN(mp)) {
XFS_ERROR_REPORT("xfs_trans_cancel", XFS_ERRLEVEL_LOW, mp);
*/
if ((tp->t_flags & XFS_TRANS_DIRTY) && !XFS_FORCED_SHUTDOWN(mp)) {
XFS_ERROR_REPORT("xfs_trans_cancel", XFS_ERRLEVEL_LOW, mp);
- xfs_force_shutdown(mp,
XFS
_CORRUPT_INCORE);
+ xfs_force_shutdown(mp,
SHUTDOWN
_CORRUPT_INCORE);
}
#ifdef DEBUG
if (!(flags & XFS_TRANS_ABORT)) {
}
#ifdef DEBUG
if (!(flags & XFS_TRANS_ABORT)) {
@@
-1182,7
+1170,7
@@
xfs_trans_cancel(
}
/* mark this thread as no longer being in a transaction */
}
/* mark this thread as no longer being in a transaction */
-
PFLAGS_RESTORE_FSTRANS(&tp->t_pflags
);
+
current_restore_flags_nested(&tp->t_pflags, PF_FSTRANS
);
xfs_trans_free_items(tp, flags);
xfs_trans_free_busy(tp);
xfs_trans_free_items(tp, flags);
xfs_trans_free_busy(tp);