Loading fs/xfs/linux-2.6/kmem.h +1 −37 Original line number Diff line number Diff line Loading @@ -22,42 +22,6 @@ #include <linux/sched.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 */ Loading @@ -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; Loading fs/xfs/linux-2.6/xfs_aops.c +2 −2 Original line number Diff line number Diff line Loading @@ -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; /* Loading Loading @@ -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; /* Loading fs/xfs/linux-2.6/xfs_linux.h +10 −4 Original line number Diff line number Diff line Loading @@ -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) Loading fs/xfs/xfs_trans.c +11 −14 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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 Loading @@ -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; Loading Loading @@ -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; } Loading Loading @@ -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); Loading Loading @@ -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); } Loading Loading @@ -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 Loading Loading @@ -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); Loading Loading
fs/xfs/linux-2.6/kmem.h +1 −37 Original line number Diff line number Diff line Loading @@ -22,42 +22,6 @@ #include <linux/sched.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 */ Loading @@ -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; Loading
fs/xfs/linux-2.6/xfs_aops.c +2 −2 Original line number Diff line number Diff line Loading @@ -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; /* Loading Loading @@ -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; /* Loading
fs/xfs/linux-2.6/xfs_linux.h +10 −4 Original line number Diff line number Diff line Loading @@ -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) Loading
fs/xfs/xfs_trans.c +11 −14 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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 Loading @@ -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; Loading Loading @@ -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; } Loading Loading @@ -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); Loading Loading @@ -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); } Loading Loading @@ -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 Loading Loading @@ -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); Loading