diff options
| -rw-r--r-- | fs/xfs/libxfs/xfs_sb.c | 12 | ||||
| -rw-r--r-- | fs/xfs/libxfs/xfs_sb.h | 2 | ||||
| -rw-r--r-- | fs/xfs/xfs_rtalloc.c | 5 | 
3 files changed, 15 insertions, 4 deletions
| diff --git a/fs/xfs/libxfs/xfs_sb.c b/fs/xfs/libxfs/xfs_sb.c index f9c3045f71e0..a6fa9aedb28b 100644 --- a/fs/xfs/libxfs/xfs_sb.c +++ b/fs/xfs/libxfs/xfs_sb.c @@ -965,6 +965,15 @@ const struct xfs_buf_ops xfs_sb_quiet_buf_ops = {  	.verify_write = xfs_sb_write_verify,  }; +void +xfs_mount_sb_set_rextsize( +	struct xfs_mount	*mp, +	struct xfs_sb		*sbp) +{ +	mp->m_rtxblklog = log2_if_power2(sbp->sb_rextsize); +	mp->m_rtxblkmask = mask64_if_power2(sbp->sb_rextsize); +} +  /*   * xfs_mount_common   * @@ -989,8 +998,7 @@ xfs_sb_mount_common(  	mp->m_blockmask = sbp->sb_blocksize - 1;  	mp->m_blockwsize = sbp->sb_blocksize >> XFS_WORDLOG;  	mp->m_blockwmask = mp->m_blockwsize - 1; -	mp->m_rtxblklog = log2_if_power2(sbp->sb_rextsize); -	mp->m_rtxblkmask = mask64_if_power2(sbp->sb_rextsize); +	xfs_mount_sb_set_rextsize(mp, sbp);  	mp->m_alloc_mxr[0] = xfs_allocbt_maxrecs(mp, sbp->sb_blocksize, 1);  	mp->m_alloc_mxr[1] = xfs_allocbt_maxrecs(mp, sbp->sb_blocksize, 0); diff --git a/fs/xfs/libxfs/xfs_sb.h b/fs/xfs/libxfs/xfs_sb.h index 796f02191dfd..885c83755991 100644 --- a/fs/xfs/libxfs/xfs_sb.h +++ b/fs/xfs/libxfs/xfs_sb.h @@ -17,6 +17,8 @@ extern void	xfs_log_sb(struct xfs_trans *tp);  extern int	xfs_sync_sb(struct xfs_mount *mp, bool wait);  extern int	xfs_sync_sb_buf(struct xfs_mount *mp);  extern void	xfs_sb_mount_common(struct xfs_mount *mp, struct xfs_sb *sbp); +void		xfs_mount_sb_set_rextsize(struct xfs_mount *mp, +			struct xfs_sb *sbp);  extern void	xfs_sb_from_disk(struct xfs_sb *to, struct xfs_dsb *from);  extern void	xfs_sb_to_disk(struct xfs_dsb *to, struct xfs_sb *from);  extern void	xfs_sb_quota_from_disk(struct xfs_sb *sbp); diff --git a/fs/xfs/xfs_rtalloc.c b/fs/xfs/xfs_rtalloc.c index a9f08d96f1fe..4bbb50d5a4b7 100644 --- a/fs/xfs/xfs_rtalloc.c +++ b/fs/xfs/xfs_rtalloc.c @@ -719,8 +719,8 @@ xfs_growfs_rt_bmblock(  	/*  	 * Calculate new sb and mount fields for this round.  	 */ -	nmp->m_rtxblklog = -1; /* don't use shift or masking */  	nmp->m_sb.sb_rextsize = rextsize; +	xfs_mount_sb_set_rextsize(nmp, &nmp->m_sb);  	nmp->m_sb.sb_rbmblocks = bmbno + 1;  	nmp->m_sb.sb_rblocks = min(nrblocks, nrblocks_step);  	nmp->m_sb.sb_rextents = xfs_rtb_to_rtx(nmp, nmp->m_sb.sb_rblocks); @@ -807,10 +807,11 @@ xfs_growfs_rt_bmblock(  	xfs_trans_mod_sb(args.tp, XFS_TRANS_SB_FREXTENTS, freed_rtx);  	/* -	 * Update mp values into the real mp structure. +	 * Update the calculated values in the real mount structure.  	 */  	mp->m_rsumlevels = nmp->m_rsumlevels;  	mp->m_rsumsize = nmp->m_rsumsize; +	xfs_mount_sb_set_rextsize(mp, &mp->m_sb);  	/*  	 * Recompute the growfsrt reservation from the new rsumsize. | 
