]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
xfs: Fix xfs_grow_last_rtg()
authorNirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
Mon, 12 Jan 2026 08:24:02 +0000 (13:54 +0530)
committerCarlos Maiolino <cem@kernel.org>
Tue, 13 Jan 2026 09:40:45 +0000 (10:40 +0100)
The last rtg should be able to grow when the size of the last is less
than (and not equal to) sb_rgextents. xfs_growfs with realtime groups
fails without this patch. The reason is that, xfs_growfs_rtg() tries
to grow the last rt group even when the last rt group is at its
maximal size i.e, sb_rgextents. It fails with the following messages:

XFS (loop0): Internal error block >= mp->m_rsumblocks at line 253 of file fs/xfs/libxfs/xfs_rtbitmap.c.  Caller xfs_rtsummary_read_buf+0x20/0x80
XFS (loop0): Corruption detected. Unmount and run xfs_repair
XFS (loop0): Internal error xfs_trans_cancel at line 976 of file fs/xfs/xfs_trans.c.  Caller xfs_growfs_rt_bmblock+0x402/0x450
XFS (loop0): Corruption of in-memory data (0x8) detected at xfs_trans_cancel+0x10a/0x1f0 (fs/xfs/xfs_trans.c:977).  Shutting down filesystem.
XFS (loop0): Please unmount the filesystem and rectify the problem(s)

Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
fs/xfs/xfs_rtalloc.c

index 202dcd2f40395276f8e53f76aaae8bd284fa1a92..a12ffed12391949e070c234af09a489b05965245 100644 (file)
@@ -1326,7 +1326,7 @@ xfs_grow_last_rtg(
                return true;
        if (mp->m_sb.sb_rgcount == 0)
                return false;
-       return xfs_rtgroup_extents(mp, mp->m_sb.sb_rgcount - 1) <=
+       return xfs_rtgroup_extents(mp, mp->m_sb.sb_rgcount - 1) <
                        mp->m_sb.sb_rgextents;
 }