xfs: calculate XFS_TRANS_QM_SBCHANGE space log reservation at mount time
PATCH v4 3/13 xfs: calculate XFS_TRANS_QM_SBCHANGE space log reservation at mount time
The transaction log space for clearing/reseting the quota flags is calculated out at runtime, this patch can figure it out at mount time.
Signed-off-by Jie Liu <[email protected]>
CC Dave Chinner <[email protected]>
Reviewed-by Mark Tinguely <[email protected]>
--- fs/xfs/xfs_mount.c | 4 ++-- fs/xfs/xfs_mount.h | 1 + fs/xfs/xfs_trans.c | 12 ++++++++++++ fs/xfs/xfs_trans.h | 2 +- 4 files changed, 16 insertions(+), 3 deletions(-)
fs/xfs/xfs_mount.c +2 -2
@@ -1056,8 +1056,8 @@ xfs_mount_reset_sbqflags(return 0 ; tp =xfs_trans_alloc (mp,XFS_TRANS_QM_SBCHANGE ); - error =xfs_trans_reserve (tp,0 , mp->m_sb.sb_sectsize +128 ,0 ,0 , -XFS_DEFAULT_LOG_COUNT ); + error =xfs_trans_reserve (tp,0 ,XFS_QM_SBCHANGE_LOG_RES (mp), +0 ,0 ,XFS_DEFAULT_LOG_COUNT );if (error) {xfs_trans_cancel (tp,0 );xfs_alert (mp,"%s: Superblock update failed!" , __func__);
fs/xfs/xfs_mount.h +1 -0
@@ -40,6 +40,7 @@ typedef struct xfs_trans_reservations {uint tr_growrtalloc;/* grow realtime allocations */ uint tr_growrtzero;/* grow realtime zeroing */ uint tr_growrtfree;/* grow realtime freeing */ +uint tr_qm_sbchange;/* change quota flags */ } xfs_trans_reservations_t;#ifndef __KERNEL__
fs/xfs/xfs_trans.c +12 -0
@@ -545,6 +545,17 @@ xfs_calc_clear_agi_bucket_reservation( }/* +* Clearing the quotaflags in the superblock. +* the super block for changing quota flags: sector size +*/ +STATIC uint +xfs_calc_qm_sbchange_reservation ( +struct xfs_mount *mp) +{ +return xfs_calc_buf_res (1 , mp->m_sb.sb_sectsize); +} + +/* * Initialize the precomputed transaction reservation values * in the mount structure. */
@@ -575,6 +586,7 @@ xfs_trans_init( resp->tr_growrtalloc =xfs_calc_growrtalloc_reservation (mp); resp->tr_growrtzero =xfs_calc_growrtzero_reservation (mp); resp->tr_growrtfree =xfs_calc_growrtfree_reservation (mp); + resp->tr_qm_sbchange =xfs_calc_qm_sbchange_reservation (mp); }/*
fs/xfs/xfs_trans.h +1 -1
@@ -262,7 +262,7 @@ struct xfs_log_item_desc { (128 * (ext + (ext * XFS_BM_MAXLEVELS(mp, XFS_ATTR_FORK)))))#define XFS_ATTRRM_LOG_RES (mp) ((mp)->m_reservations.tr_attrrm)#define XFS_CLEAR_AGI_BUCKET_LOG_RES (mp) ((mp)->m_reservations.tr_clearagi) - +#define XFS_QM_SBCHANGE_LOG_RES (mp) ((mp)->m_reservations.tr_qm_sbchange)/* * Various log count values.
Signature · 7 lines
1.7.9.5 _______________________________________________ xfs mailing list [email protected] http://oss.sgi.com/mailman/listinfo/xfs