]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs: don't merge ioends across RTGs
authorDarrick J. Wong <djwong@kernel.org>
Mon, 25 Nov 2024 21:14:24 +0000 (13:14 -0800)
committerDarrick J. Wong <djwong@kernel.org>
Tue, 24 Dec 2024 02:01:30 +0000 (18:01 -0800)
Source kernel commit: b91afef724710e3dc7d65a28105ffd7a4e861d69

Unlike AGs, RTGs don't always have metadata in their first blocks, and
thus we don't get automatic protection from merging I/O completions
across RTG boundaries.  Add code to set the IOMAP_F_BOUNDARY flag for
ioends that start at the first block of a RTG so that they never get
merged into the previous ioend.

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>
Reviewed-by: Christoph Hellwig <hch@lst.de>
libxfs/xfs_rtgroup.h

index 026f34f984b32f8face53c65d2f8a77769158947..2ddfac9a0182f9217c84c55d8cc1fc2ece352bd8 100644 (file)
@@ -188,6 +188,15 @@ xfs_rtb_to_rgbno(
        return __xfs_rtb_to_rgbno(mp, rtbno);
 }
 
+/* Is rtbno the start of a RT group? */
+static inline bool
+xfs_rtbno_is_group_start(
+       struct xfs_mount        *mp,
+       xfs_rtblock_t           rtbno)
+{
+       return (rtbno & mp->m_rgblkmask) == 0;
+}
+
 static inline xfs_daddr_t
 xfs_rtb_to_daddr(
        struct xfs_mount        *mp,