Commit 59c1b082 authored by Nathan Scott's avatar Nathan Scott

[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: default avatarNathan Scott <nathans@sgi.com>
parent e1090074
...@@ -22,42 +22,6 @@ ...@@ -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) ...@@ -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( ...@@ -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( ...@@ -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); ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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 @@ xfs_trans_reserve( ...@@ -426,9 +423,9 @@ xfs_trans_reserve(
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 @@ _xfs_trans_commit( ...@@ -819,7 +816,7 @@ _xfs_trans_commit(
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 @@ _xfs_trans_commit( ...@@ -884,7 +881,7 @@ _xfs_trans_commit(
* 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 @@ _xfs_trans_commit( ...@@ -926,7 +923,7 @@ _xfs_trans_commit(
/* /*
* 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( ...@@ -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);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment