xfs: factor out a xfs_last_rt_bmblock helper

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>
This commit is contained in:
Christoph Hellwig 2024-08-30 15:36:58 -07:00 committed by Darrick J. Wong
parent 7996f10ce6
commit 266e78aec4

View File

@ -948,6 +948,23 @@ xfs_growfs_rt_bmblock(
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)