Message ID | 20210126125621.3846735-2-hsiangkao@redhat.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | xfs: support shrinking free space in the last AG | expand |
On Tue, Jan 26, 2021 at 08:56:15PM +0800, Gao Xiang wrote: > It actually means the delta block count of growfs. Rename it in order > to make it clear. Also introduce nb_div to avoid reusing `delta`. > > Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> > Signed-off-by: Gao Xiang <hsiangkao@redhat.com> > --- Looks reasonable: Reviewed-by: Brian Foster <bfoster@redhat.com> > fs/xfs/xfs_fsops.c | 20 ++++++++++---------- > 1 file changed, 10 insertions(+), 10 deletions(-) > > diff --git a/fs/xfs/xfs_fsops.c b/fs/xfs/xfs_fsops.c > index 959ce91a3755..62600d78bbf1 100644 > --- a/fs/xfs/xfs_fsops.c > +++ b/fs/xfs/xfs_fsops.c > @@ -32,8 +32,8 @@ xfs_growfs_data_private( > int error; > xfs_agnumber_t nagcount; > xfs_agnumber_t nagimax = 0; > - xfs_rfsblock_t nb, nb_mod; > - xfs_rfsblock_t new; > + xfs_rfsblock_t nb, nb_div, nb_mod; > + xfs_rfsblock_t delta; > xfs_agnumber_t oagcount; > xfs_trans_t *tp; > struct aghdr_init_data id = {}; > @@ -50,16 +50,16 @@ xfs_growfs_data_private( > return error; > xfs_buf_relse(bp); > > - new = nb; /* use new as a temporary here */ > - nb_mod = do_div(new, mp->m_sb.sb_agblocks); > - nagcount = new + (nb_mod != 0); > + nb_div = nb; > + nb_mod = do_div(nb_div, mp->m_sb.sb_agblocks); > + nagcount = nb_div + (nb_mod != 0); > if (nb_mod && nb_mod < XFS_MIN_AG_BLOCKS) { > nagcount--; > nb = (xfs_rfsblock_t)nagcount * mp->m_sb.sb_agblocks; > if (nb < mp->m_sb.sb_dblocks) > return -EINVAL; > } > - new = nb - mp->m_sb.sb_dblocks; > + delta = nb - mp->m_sb.sb_dblocks; > oagcount = mp->m_sb.sb_agcount; > > /* allocate the new per-ag structures */ > @@ -89,7 +89,7 @@ xfs_growfs_data_private( > INIT_LIST_HEAD(&id.buffer_list); > for (id.agno = nagcount - 1; > id.agno >= oagcount; > - id.agno--, new -= id.agsize) { > + id.agno--, delta -= id.agsize) { > > if (id.agno == nagcount - 1) > id.agsize = nb - > @@ -110,8 +110,8 @@ xfs_growfs_data_private( > xfs_trans_agblocks_delta(tp, id.nfree); > > /* If there are new blocks in the old last AG, extend it. */ > - if (new) { > - error = xfs_ag_extend_space(mp, tp, &id, new); > + if (delta) { > + error = xfs_ag_extend_space(mp, tp, &id, delta); > if (error) > goto out_trans_cancel; > } > @@ -143,7 +143,7 @@ xfs_growfs_data_private( > * If we expanded the last AG, free the per-AG reservation > * so we can reinitialize it with the new size. > */ > - if (new) { > + if (delta) { > struct xfs_perag *pag; > > pag = xfs_perag_get(mp, id.agno); > -- > 2.27.0 >
diff --git a/fs/xfs/xfs_fsops.c b/fs/xfs/xfs_fsops.c index 959ce91a3755..62600d78bbf1 100644 --- a/fs/xfs/xfs_fsops.c +++ b/fs/xfs/xfs_fsops.c @@ -32,8 +32,8 @@ xfs_growfs_data_private( int error; xfs_agnumber_t nagcount; xfs_agnumber_t nagimax = 0; - xfs_rfsblock_t nb, nb_mod; - xfs_rfsblock_t new; + xfs_rfsblock_t nb, nb_div, nb_mod; + xfs_rfsblock_t delta; xfs_agnumber_t oagcount; xfs_trans_t *tp; struct aghdr_init_data id = {}; @@ -50,16 +50,16 @@ xfs_growfs_data_private( return error; xfs_buf_relse(bp); - new = nb; /* use new as a temporary here */ - nb_mod = do_div(new, mp->m_sb.sb_agblocks); - nagcount = new + (nb_mod != 0); + nb_div = nb; + nb_mod = do_div(nb_div, mp->m_sb.sb_agblocks); + nagcount = nb_div + (nb_mod != 0); if (nb_mod && nb_mod < XFS_MIN_AG_BLOCKS) { nagcount--; nb = (xfs_rfsblock_t)nagcount * mp->m_sb.sb_agblocks; if (nb < mp->m_sb.sb_dblocks) return -EINVAL; } - new = nb - mp->m_sb.sb_dblocks; + delta = nb - mp->m_sb.sb_dblocks; oagcount = mp->m_sb.sb_agcount; /* allocate the new per-ag structures */ @@ -89,7 +89,7 @@ xfs_growfs_data_private( INIT_LIST_HEAD(&id.buffer_list); for (id.agno = nagcount - 1; id.agno >= oagcount; - id.agno--, new -= id.agsize) { + id.agno--, delta -= id.agsize) { if (id.agno == nagcount - 1) id.agsize = nb - @@ -110,8 +110,8 @@ xfs_growfs_data_private( xfs_trans_agblocks_delta(tp, id.nfree); /* If there are new blocks in the old last AG, extend it. */ - if (new) { - error = xfs_ag_extend_space(mp, tp, &id, new); + if (delta) { + error = xfs_ag_extend_space(mp, tp, &id, delta); if (error) goto out_trans_cancel; } @@ -143,7 +143,7 @@ xfs_growfs_data_private( * If we expanded the last AG, free the per-AG reservation * so we can reinitialize it with the new size. */ - if (new) { + if (delta) { struct xfs_perag *pag; pag = xfs_perag_get(mp, id.agno);