[XFS] Make the pflags test/set wrappers more legible for us mere humans.
SGI-PV: 953338 SGI-Modid: xfs-linux-melb:xfs-kern:26099a Signed-off-by: Nathan Scott <nathans@sgi.com>
This commit is contained in:
@@ -22,42 +22,6 @@
|
|||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
|
|
||||||
/*
|
|
||||||
* Process flags handling
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define PFLAGS_TEST_NOIO() (current->flags & PF_NOIO)
|
|
||||||
#define PFLAGS_TEST_FSTRANS() (current->flags & PF_FSTRANS)
|
|
||||||
|
|
||||||
#define PFLAGS_SET_NOIO() do { \
|
|
||||||
current->flags |= PF_NOIO; \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
#define PFLAGS_CLEAR_NOIO() do { \
|
|
||||||
current->flags &= ~PF_NOIO; \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
/* these could be nested, so we save state */
|
|
||||||
#define PFLAGS_SET_FSTRANS(STATEP) do { \
|
|
||||||
*(STATEP) = current->flags; \
|
|
||||||
current->flags |= PF_FSTRANS; \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
#define PFLAGS_CLEAR_FSTRANS(STATEP) do { \
|
|
||||||
*(STATEP) = current->flags; \
|
|
||||||
current->flags &= ~PF_FSTRANS; \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
/* Restore the PF_FSTRANS state to what was saved in STATEP */
|
|
||||||
#define PFLAGS_RESTORE_FSTRANS(STATEP) do { \
|
|
||||||
current->flags = ((current->flags & ~PF_FSTRANS) | \
|
|
||||||
(*(STATEP) & PF_FSTRANS)); \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
#define PFLAGS_DUP(OSTATEP, NSTATEP) do { \
|
|
||||||
*(NSTATEP) = *(OSTATEP); \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* General memory allocation interfaces
|
* General memory allocation interfaces
|
||||||
*/
|
*/
|
||||||
@@ -83,7 +47,7 @@ kmem_flags_convert(unsigned int __nocast flags)
|
|||||||
lflags = GFP_ATOMIC | __GFP_NOWARN;
|
lflags = GFP_ATOMIC | __GFP_NOWARN;
|
||||||
} else {
|
} else {
|
||||||
lflags = GFP_KERNEL | __GFP_NOWARN;
|
lflags = GFP_KERNEL | __GFP_NOWARN;
|
||||||
if (PFLAGS_TEST_FSTRANS() || (flags & KM_NOFS))
|
if ((current->flags & PF_FSTRANS) || (flags & KM_NOFS))
|
||||||
lflags &= ~__GFP_FS;
|
lflags &= ~__GFP_FS;
|
||||||
}
|
}
|
||||||
return lflags;
|
return lflags;
|
||||||
|
@@ -1126,7 +1126,7 @@ xfs_vm_writepage(
|
|||||||
* then mark the page dirty again and leave the page
|
* then mark the page dirty again and leave the page
|
||||||
* as is.
|
* as is.
|
||||||
*/
|
*/
|
||||||
if (PFLAGS_TEST_FSTRANS() && need_trans)
|
if (current_test_flags(PF_FSTRANS) && need_trans)
|
||||||
goto out_fail;
|
goto out_fail;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -1203,7 +1203,7 @@ xfs_vm_releasepage(
|
|||||||
/* If we are already inside a transaction or the thread cannot
|
/* If we are already inside a transaction or the thread cannot
|
||||||
* do I/O, we cannot release this page.
|
* do I/O, we cannot release this page.
|
||||||
*/
|
*/
|
||||||
if (PFLAGS_TEST_FSTRANS())
|
if (current_test_flags(PF_FSTRANS))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -136,13 +136,19 @@ BUFFER_FNS(PrivateStart, unwritten);
|
|||||||
#define xfs_rotorstep xfs_params.rotorstep.val
|
#define xfs_rotorstep xfs_params.rotorstep.val
|
||||||
#define xfs_inherit_nodefrag xfs_params.inherit_nodfrg.val
|
#define xfs_inherit_nodefrag xfs_params.inherit_nodfrg.val
|
||||||
|
|
||||||
#ifndef raw_smp_processor_id
|
#define current_cpu() (raw_smp_processor_id())
|
||||||
#define raw_smp_processor_id() smp_processor_id()
|
|
||||||
#endif
|
|
||||||
#define current_cpu() raw_smp_processor_id()
|
|
||||||
#define current_pid() (current->pid)
|
#define current_pid() (current->pid)
|
||||||
#define current_fsuid(cred) (current->fsuid)
|
#define current_fsuid(cred) (current->fsuid)
|
||||||
#define current_fsgid(cred) (current->fsgid)
|
#define current_fsgid(cred) (current->fsgid)
|
||||||
|
#define current_set_flags(f) (current->flags |= (f))
|
||||||
|
#define current_test_flags(f) (current->flags & (f))
|
||||||
|
#define current_clear_flags(f) (current->flags & ~(f))
|
||||||
|
#define current_set_flags_nested(sp, f) \
|
||||||
|
(*(sp) = current->flags, current->flags |= (f))
|
||||||
|
#define current_clear_flags_nested(sp, f) \
|
||||||
|
(*(sp) = current->flags, current->flags &= ~(f))
|
||||||
|
#define current_restore_flags_nested(sp, f) \
|
||||||
|
(current->flags = ((current->flags & ~(f)) | (*(sp) & (f))))
|
||||||
|
|
||||||
#define NBPP PAGE_SIZE
|
#define NBPP PAGE_SIZE
|
||||||
#define DPPSHFT (PAGE_SHIFT - 9)
|
#define DPPSHFT (PAGE_SHIFT - 9)
|
||||||
|
@@ -303,7 +303,7 @@ xfs_trans_dup(
|
|||||||
tp->t_blk_res = tp->t_blk_res_used;
|
tp->t_blk_res = tp->t_blk_res_used;
|
||||||
ntp->t_rtx_res = tp->t_rtx_res - tp->t_rtx_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_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 +335,11 @@ xfs_trans_reserve(
|
|||||||
uint logcount)
|
uint logcount)
|
||||||
{
|
{
|
||||||
int log_flags;
|
int log_flags;
|
||||||
int error;
|
int error = 0;
|
||||||
int rsvd;
|
int rsvd = (tp->t_flags & XFS_TRANS_RESERVE) != 0;
|
||||||
|
|
||||||
error = 0;
|
|
||||||
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 +350,7 @@ xfs_trans_reserve(
|
|||||||
error = xfs_mod_incore_sb(tp->t_mountp, XFS_SBS_FDBLOCKS,
|
error = xfs_mod_incore_sb(tp->t_mountp, XFS_SBS_FDBLOCKS,
|
||||||
-blocks, rsvd);
|
-blocks, rsvd);
|
||||||
if (error != 0) {
|
if (error != 0) {
|
||||||
PFLAGS_RESTORE_FSTRANS(&tp->t_pflags);
|
current_restore_flags_nested(&tp->t_pflags, PF_FSTRANS);
|
||||||
return (XFS_ERROR(ENOSPC));
|
return (XFS_ERROR(ENOSPC));
|
||||||
}
|
}
|
||||||
tp->t_blk_res += blocks;
|
tp->t_blk_res += blocks;
|
||||||
@@ -426,9 +423,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 +816,7 @@ shut_us_down:
|
|||||||
if (commit_lsn == -1 && !shutdown)
|
if (commit_lsn == -1 && !shutdown)
|
||||||
shutdown = XFS_ERROR(EIO);
|
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_items(tp, shutdown? XFS_TRANS_ABORT : 0);
|
||||||
xfs_trans_free_busy(tp);
|
xfs_trans_free_busy(tp);
|
||||||
xfs_trans_free(tp);
|
xfs_trans_free(tp);
|
||||||
@@ -884,7 +881,7 @@ shut_us_down:
|
|||||||
* had pinned, clean up, free trans structure, and return error.
|
* had pinned, clean up, free trans structure, and return error.
|
||||||
*/
|
*/
|
||||||
if (error || commit_lsn == -1) {
|
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);
|
xfs_trans_uncommit(tp, flags|XFS_TRANS_ABORT);
|
||||||
return XFS_ERROR(EIO);
|
return XFS_ERROR(EIO);
|
||||||
}
|
}
|
||||||
@@ -926,7 +923,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
|
||||||
@@ -1182,7 +1179,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_items(tp, flags);
|
||||||
xfs_trans_free_busy(tp);
|
xfs_trans_free_busy(tp);
|
||||||
|
Reference in New Issue
Block a user