]> www.infradead.org Git - nvme.git/commitdiff
xfs: factor out a xfs_last_rt_bmblock helper
authorChristoph Hellwig <hch@lst.de>
Fri, 30 Aug 2024 22:36:58 +0000 (15:36 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Sun, 1 Sep 2024 15:58:19 +0000 (08:58 -0700)
Add helper to calculate the last currently used rt bitmap block to
better structure the growfs code and prepare for future changes to it.

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 febd039718ee4175ae8de9d09c07022a63f41475..45a0d29949ea0d55e221428fd605201082b2d0c7 100644 (file)
@@ -948,6 +948,23 @@ out_free:
        return error;
 }
 
+/*
+ * Calculate the last rbmblock currently used.
+ *
+ * This also deals with the case where there were no rtextents before.
+ */
+static xfs_fileoff_t
+xfs_last_rt_bmblock(
+       struct xfs_mount        *mp)
+{
+       xfs_fileoff_t           bmbno = mp->m_sb.sb_rbmblocks;
+
+       /* Skip the current block if it is exactly full. */
+       if (xfs_rtx_to_rbmword(mp, mp->m_sb.sb_rextents) != 0)
+               bmbno--;
+       return bmbno;
+}
+
 /*
  * Grow the realtime area of the filesystem.
  */
@@ -1059,16 +1076,8 @@ xfs_growfs_rt(
                        goto out_unlock;
        }
 
-       /*
-        * Loop over the bitmap blocks.
-        * We will do everything one bitmap block at a time.
-        * Skip the current block if it is exactly full.
-        * This also deals with the case where there were no rtextents before.
-        */
-       bmbno = mp->m_sb.sb_rbmblocks;
-       if (xfs_rtx_to_rbmword(mp, mp->m_sb.sb_rextents) != 0)
-               bmbno--;
-       for (; bmbno < nrbmblocks; bmbno++) {
+       /* Initialize the free space bitmap one bitmap block at a time. */
+       for (bmbno = xfs_last_rt_bmblock(mp); bmbno < nrbmblocks; bmbno++) {
                error = xfs_growfs_rt_bmblock(mp, in->newblocks, in->extsize,
                                bmbno);
                if (error)