[XFS] Make the pflags test/set wrappers more legible for us mere humans.
Nathan Scott [Fri, 9 Jun 2006 04:59:13 +0000 (14:59 +1000)]
SGI-PV: 953338
SGI-Modid: xfs-linux-melb:xfs-kern:26099a

Signed-off-by: Nathan Scott <nathans@sgi.com>

fs/xfs/linux-2.6/kmem.h
fs/xfs/linux-2.6/xfs_aops.c
fs/xfs/linux-2.6/xfs_linux.h
fs/xfs/xfs_trans.c

index 2cfd33d..939bd84 100644 (file)
 #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
  */
 
@@ -83,7 +47,7 @@ kmem_flags_convert(unsigned int __nocast flags)
                lflags = GFP_ATOMIC | __GFP_NOWARN;
        } else {
                lflags = GFP_KERNEL | __GFP_NOWARN;
-               if (PFLAGS_TEST_FSTRANS() || (flags & KM_NOFS))
+               if ((current->flags & PF_FSTRANS) || (flags & KM_NOFS))
                        lflags &= ~__GFP_FS;
        }
        return lflags;
index 1fcdc0a..5835e69 100644 (file)
@@ -1126,7 +1126,7 @@ xfs_vm_writepage(
         * then mark the page dirty again and leave the page
         * as is.
         */
-       if (PFLAGS_TEST_FSTRANS() && need_trans)
+       if (current_test_flags(PF_FSTRANS) && need_trans)
                goto out_fail;
 
        /*
@@ -1203,7 +1203,7 @@ xfs_vm_releasepage(
        /* If we are already inside a transaction or the thread cannot
         * do I/O, we cannot release this page.
         */
-       if (PFLAGS_TEST_FSTRANS())
+       if (current_test_flags(PF_FSTRANS))
                return 0;
 
        /*
index 7d15cb9..e928539 100644 (file)
@@ -136,13 +136,19 @@ BUFFER_FNS(PrivateStart, unwritten);
 #define xfs_rotorstep          xfs_params.rotorstep.val
 #define xfs_inherit_nodefrag   xfs_params.inherit_nodfrg.val
 
-#ifndef raw_smp_processor_id
-#define raw_smp_processor_id() smp_processor_id()
-#endif
-#define current_cpu()          raw_smp_processor_id()
+#define current_cpu()          (raw_smp_processor_id())
 #define current_pid()          (current->pid)
 #define current_fsuid(cred)    (current->fsuid)
 #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 DPPSHFT                (PAGE_SHIFT - 9)
index c05da58..7a99ed3 100644 (file)
@@ -303,7 +303,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;
-       PFLAGS_DUP(&tp->t_pflags, &ntp->t_pflags);
+       ntp->t_pflags = tp->t_pflags;
 
        XFS_TRANS_DUP_DQINFO(tp->t_mountp, tp, ntp);
 
@@ -335,14 +335,11 @@ xfs_trans_reserve(
        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 */
-        PFLAGS_SET_FSTRANS(&tp->t_pflags);
+       current_set_flags_nested(&tp->t_pflags, PF_FSTRANS);
 
        /*
         * 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,
                                          -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;
@@ -426,9 +423,9 @@ undo_blocks:
                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)
                                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);
@@ -884,7 +881,7 @@ shut_us_down:
         * 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);
        }
@@ -926,7 +923,7 @@ shut_us_down:
        /*
         * 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
@@ -1182,7 +1179,7 @@ xfs_trans_cancel(
        }
 
        /* 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);