split xfs_icsb_sync_counters_flags
PATCH 1/3 split xfs_icsb_sync_counters_flags
Add a new xfs_icsb_sync_counters_locked for the case where m_sb_lock is already taken and add a flags argument to xfs_icsb_sync_counters so that xfs_icsb_sync_counters_flags is not needed.
fs/xfs/xfs_fsops.c +2 -2
@@ -462,7 +462,7 @@ xfs_fs_counts( xfs_mount_t *mp, xfs_fsop_counts_t *cnt) { -xfs_icsb_sync_counters_flags (mp,XFS_ICSB_LAZY_COUNT ); +xfs_icsb_sync_counters (mp,XFS_ICSB_LAZY_COUNT );spin_lock (&mp->m_sb_lock); cnt->freedata = mp->m_sb.sb_fdblocks -XFS_ALLOC_SET_ASIDE (mp); cnt->freertx = mp->m_sb.sb_frextents;
@@ -524,7 +524,7 @@ xfs_reserve_blocks(*/ retry:spin_lock (&mp->m_sb_lock); -xfs_icsb_sync_counters_flags (mp,XFS_ICSB_SB_LOCKED ); +xfs_icsb_sync_counters_locked (mp,0 );/* * If our previous reservation was larger than the current value,
fs/xfs/xfs_mount.c +8 -15
@@ -54,7 +54,6 @@ STATIC void xfs_unmountfs_wait(xfs_mount STATIC void xfs_icsb_destroy_counters(xfs_mount_t *); STATIC void xfs_icsb_balance_counter(xfs_mount_t *, xfs_sb_field_t,int ,int ); -STATIC void xfs_icsb_sync_counters(xfs_mount_t *); STATIC int xfs_icsb_modify_counters(xfs_mount_t *, xfs_sb_field_t,int64_t ,int ); STATIC int xfs_icsb_disable_counter(xfs_mount_t *, xfs_sb_field_t);
@@ -63,7 +62,6 @@ STATIC int xfs_icsb_disable_counter(xfs_#define xfs_icsb_destroy_counters (mp) do { } while (0)#define xfs_icsb_balance_counter (mp, a, b, c) do { } while (0) -#define xfs_icsb_sync_counters (mp) do { } while (0)#define xfs_icsb_modify_counters (mp, a, b, c) do { } while (0)#endif
@@ -1374,7 +1372,7 @@ xfs_log_sbcount(if (!xfs_fs_writable (mp))return 0 ; -xfs_icsb_sync_counters (mp); +xfs_icsb_sync_counters (mp,0 );/* * we don't need to do this if we are updating the superblock
@@ -2252,38 +2250,33 @@ xfs_icsb_enable_counter( }void -xfs_icsb_sync_counters_flags ( +xfs_icsb_sync_counters_locked (xfs_mount_t *mp,int flags) {xfs_icsb_cnts_t cnt; -/* Pass 1: lock all counters */ -if ((flags &XFS_ICSB_SB_LOCKED ) ==0 ) -spin_lock (&mp->m_sb_lock); -xfs_icsb_count (mp, &cnt, flags); -/* Step 3: update mp->m_sb fields */ if (!xfs_icsb_counter_disabled (mp,XFS_SBS_ICOUNT )) mp->m_sb.sb_icount = cnt.icsb_icount;if (!xfs_icsb_counter_disabled (mp,XFS_SBS_IFREE )) mp->m_sb.sb_ifree = cnt.icsb_ifree;if (!xfs_icsb_counter_disabled (mp,XFS_SBS_FDBLOCKS )) mp->m_sb.sb_fdblocks = cnt.icsb_fdblocks; - -if ((flags &XFS_ICSB_SB_LOCKED ) ==0 ) -spin_unlock (&mp->m_sb_lock); }/* * Accurate update of per-cpu counters to incore superblock */ -STATIC void +void xfs_icsb_sync_counters ( -xfs_mount_t *mp) +xfs_mount_t *mp, +int flags) { -xfs_icsb_sync_counters_flags (mp,0 ); +spin_lock (&mp->m_sb_lock); +xfs_icsb_sync_counters_locked (mp, flags); +spin_unlock (&mp->m_sb_lock); }/*
fs/xfs/xfs_mount.h +3 -2
@@ -211,12 +211,13 @@ typedef struct xfs_icsb_cnts {extern int xfs_icsb_init_counters (struct xfs_mount *);extern void xfs_icsb_reinit_counters (struct xfs_mount *); -extern void xfs_icsb_sync_counters_flags (struct xfs_mount *,int ); +extern void xfs_icsb_sync_counters (struct xfs_mount *,int ); +extern void xfs_icsb_sync_counters_locked (struct xfs_mount *,int );#else #define xfs_icsb_init_counters (mp) (0)#define xfs_icsb_reinit_counters (mp) do { } while (0) -#define xfs_icsb_sync_counters_flags (mp, flags) do { } while (0) +#define xfs_icsb_sync_counters (mp, flags) do { } while (0)#endif typedef struct xfs_ail {
fs/xfs/linux-2.6/xfs_super.c +1 -1
@@ -1182,7 +1182,7 @@ xfs_fs_statfs( statp->f_fsid.val[0 ] = (u32 )id; statp->f_fsid.val[1 ] = (u32)(id >>32 ); -xfs_icsb_sync_counters_flags (mp,XFS_ICSB_LAZY_COUNT ); +xfs_icsb_sync_counters (mp,XFS_ICSB_LAZY_COUNT );spin_lock (&mp->m_sb_lock); statp->f_bsize = sbp->sb_blocksize;
ping? (for the whole patch series)
Quoted 129 lines · Christoph Hellwig
Add a new
xfs_icsb_sync_counters_lockedfor the case wherem_sb_lockis already taken and add a flags argument toxfs_icsb_sync_countersso thatxfs_icsb_sync_counters_flagsis not needed.Signed-off-by Christoph Hellwig <[email protected]>Index:
linux-2.6-xfs/fs/xfs/xfs_fsops.c
===================================================================fs/xfs/xfs_fsops.c +2
-2@@ -462,7 +462,7 @@ xfs_fs_counts( xfs_mount_t *mp, xfs_fsop_counts_t *cnt) { -xfs_icsb_sync_counters_flags (mp,XFS_ICSB_LAZY_COUNT ); +xfs_icsb_sync_counters (mp,XFS_ICSB_LAZY_COUNT );spin_lock (&mp->m_sb_lock); cnt->freedata = mp->m_sb.sb_fdblocks -XFS_ALLOC_SET_ASIDE (mp); cnt->freertx = mp->m_sb.sb_frextents;@@ -524,7 +524,7 @@ xfs_reserve_blocks(*/ retry:spin_lock (&mp->m_sb_lock); -xfs_icsb_sync_counters_flags (mp,XFS_ICSB_SB_LOCKED ); +xfs_icsb_sync_counters_locked (mp,0 );/* * If our previous reservation was larger than the current value, Index:
linux-2.6-xfs/fs/xfs/xfs_mount.c
===================================================================fs/xfs/xfs_mount.c +8
-15@@ -54,7 +54,6 @@ STATIC void xfs_unmountfs_wait(xfs_mount STATIC void xfs_icsb_destroy_counters(xfs_mount_t *); STATIC void xfs_icsb_balance_counter(xfs_mount_t *, xfs_sb_field_t,int ,int ); -STATIC void xfs_icsb_sync_counters(xfs_mount_t *); STATIC int xfs_icsb_modify_counters(xfs_mount_t *, xfs_sb_field_t,int64_t ,int ); STATIC int xfs_icsb_disable_counter(xfs_mount_t *, xfs_sb_field_t);@@ -63,7 +62,6 @@ STATIC int xfs_icsb_disable_counter(xfs_#define xfs_icsb_destroy_counters (mp) do { } while (0)#define xfs_icsb_balance_counter (mp, a, b, c) do { } while (0) -#define xfs_icsb_sync_counters (mp) do { } while (0)#define xfs_icsb_modify_counters (mp, a, b, c) do { } while (0)#endif @@ -1374,7 +1372,7 @@ xfs_log_sbcount(if (!xfs_fs_writable (mp))return 0 ; -xfs_icsb_sync_counters (mp); +xfs_icsb_sync_counters (mp,0 );/* * we don't need to do this if we are updating the superblock @@ -2252,38 +2250,33 @@ xfs_icsb_enable_counter( }void -xfs_icsb_sync_counters_flags ( +xfs_icsb_sync_counters_locked (xfs_mount_t *mp,int flags) {xfs_icsb_cnts_t cnt; -/* Pass 1: lock all counters */ -if ((flags &XFS_ICSB_SB_LOCKED ) ==0 ) -spin_lock (&mp->m_sb_lock); -xfs_icsb_count (mp, &cnt, flags); -/* Step 3: update mp->m_sb fields */ if (!xfs_icsb_counter_disabled (mp,XFS_SBS_ICOUNT )) mp->m_sb.sb_icount = cnt.icsb_icount;if (!xfs_icsb_counter_disabled (mp,XFS_SBS_IFREE )) mp->m_sb.sb_ifree = cnt.icsb_ifree;if (!xfs_icsb_counter_disabled (mp,XFS_SBS_FDBLOCKS )) mp->m_sb.sb_fdblocks = cnt.icsb_fdblocks; - -if ((flags &XFS_ICSB_SB_LOCKED ) ==0 ) -spin_unlock (&mp->m_sb_lock); }/* * Accurate update of per-cpu counters to incore superblock */ -STATIC void +void xfs_icsb_sync_counters ( -xfs_mount_t *mp) +xfs_mount_t *mp, +int flags) { -xfs_icsb_sync_counters_flags (mp,0 ); +spin_lock (&mp->m_sb_lock); +xfs_icsb_sync_counters_locked (mp, flags); +spin_unlock (&mp->m_sb_lock); }/* Index:
linux-2.6-xfs/fs/xfs/xfs_mount.h
===================================================================fs/xfs/xfs_mount.h +3
-2@@ -211,12 +211,13 @@ typedef struct xfs_icsb_cnts {extern int xfs_icsb_init_counters (struct xfs_mount *);extern void xfs_icsb_reinit_counters (struct xfs_mount *); -extern void xfs_icsb_sync_counters_flags (struct xfs_mount *,int ); +extern void xfs_icsb_sync_counters (struct xfs_mount *,int ); +extern void xfs_icsb_sync_counters_locked (struct xfs_mount *,int );#else #define xfs_icsb_init_counters (mp) (0)#define xfs_icsb_reinit_counters (mp) do { } while (0) -#define xfs_icsb_sync_counters_flags (mp, flags) do { } while (0) +#define xfs_icsb_sync_counters (mp, flags) do { } while (0)#endif typedef struct xfs_ail {Index:
linux-2.6-xfs/fs/xfs/linux-2.6/xfs_super.c
===================================================================
fs/xfs/linux-2.6/xfs_super.c xfs_fs_statfs( · line 1188
Quoted 8 lines
fs/xfs/linux-2.6/xfs_super.c +1
-1@@ -1182,7 +1182,7 @@ xfs_fs_statfs( statp->f_fsid.val[0 ] = (u32 )id; statp->f_fsid.val[1 ] = (u32)(id >>32 ); -xfs_icsb_sync_counters_flags (mp,XFS_ICSB_LAZY_COUNT ); +xfs_icsb_sync_counters (mp,XFS_ICSB_LAZY_COUNT );spin_lock (&mp->m_sb_lock); statp->f_bsize = sbp->sb_blocksize;
---end quoted text---
Quoted 1 line · Christoph Hellwig
ping? (for the whole patch series)
In my qa patch series that I haven't had a chance to check in yet.
Cheers,
Dave.
Signature · 3 lines
Dave Chinner Principal Engineer SGI Australian Software Group