]> www.infradead.org Git - users/hch/xfs.git/commitdiff
xfs: use xfs_growfs_rt_alloc_fake_mount in xfs_growfs_rt_alloc_blocks
authorChristoph Hellwig <hch@lst.de>
Thu, 15 Aug 2024 18:48:03 +0000 (11:48 -0700)
committerChristoph Hellwig <hch@lst.de>
Sun, 22 Sep 2024 08:01:23 +0000 (10:01 +0200)
Use xfs_growfs_rt_alloc_fake_mount instead of manually recalculating
the RT bitmap geometry.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
fs/xfs/xfs_rtalloc.c

index 53503b675f95197a2df27a16e0be5cbd3c529cf9..16d633da1614c3e799704e69b619f86f411c601f 100644 (file)
@@ -935,10 +935,10 @@ xfs_growfs_rt_alloc_blocks(
        struct xfs_mount        *mp = rtg_mount(rtg);
        struct xfs_inode        *rbmip = rtg->rtg_inodes[XFS_RTGI_BITMAP];
        struct xfs_inode        *rsumip = rtg->rtg_inodes[XFS_RTGI_SUMMARY];
-       xfs_rtxnum_t            nrextents = div_u64(nrblocks, rextsize);
        xfs_extlen_t            orbmblocks;
        xfs_extlen_t            orsumblocks;
        xfs_extlen_t            nrsumblocks;
+       struct xfs_mount        *nmp;
        int                     error;
 
        /*
@@ -948,9 +948,13 @@ xfs_growfs_rt_alloc_blocks(
        orbmblocks = XFS_B_TO_FSB(mp, rbmip->i_disk_size);
        orsumblocks = XFS_B_TO_FSB(mp, rsumip->i_disk_size);
 
-       *nrbmblocks = xfs_rtbitmap_blockcount(mp, nrextents);
-       nrsumblocks = xfs_rtsummary_blockcount(mp,
-               xfs_compute_rextslog(nrextents) + 1, *nrbmblocks);
+       nmp = xfs_growfs_rt_alloc_fake_mount(mp, nrblocks, rextsize);
+       if (!nmp)
+               return -ENOMEM;
+
+       *nrbmblocks = nmp->m_sb.sb_rbmblocks;
+       nrsumblocks = nmp->m_rsumblocks;
+       kfree(nmp);
 
        error = xfs_rtfile_initialize_blocks(rtg, XFS_RTGI_BITMAP, orbmblocks,
                        *nrbmblocks, NULL);