]> www.infradead.org Git - users/hch/xfsprogs.git/commitdiff
xfs_repair: allow CoW staging extents in the realtime rmap records
authorDarrick J. Wong <djwong@kernel.org>
Thu, 15 Aug 2024 18:58:29 +0000 (11:58 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Fri, 16 Aug 2024 21:57:44 +0000 (14:57 -0700)
Don't flag the rt rmap btree as having errors if there are CoW staging
extent records in it and the filesystem supports.  As far as reporting
leftover staging extents, we'll report them when we scan the rt refcount
btree, in a future patch.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
repair/scan.c

index 3ef8213b494da4737933d1ae6aba659b325f417e..e0ecd922ef4eb43980006e80ac9e6db9dbd1e9b3 100644 (file)
@@ -1407,9 +1407,20 @@ _("invalid length %llu in record %u of %s\n"),
                        continue;
                }
 
-               /* We only store file data and superblocks in the rtrmap. */
-               if (XFS_RMAP_NON_INODE_OWNER(owner) &&
-                   owner != XFS_RMAP_OWN_FS) {
+               /*
+                * We only store file data, COW data, and superblocks in the
+                * rtrmap.
+                */
+               if (owner == XFS_RMAP_OWN_COW) {
+                       if (!xfs_has_reflink(mp)) {
+                               do_warn(
+_("invalid CoW staging extent in record %u of %s\n"),
+                                               i, name);
+                               suspect++;
+                               continue;
+                       }
+               } else if (XFS_RMAP_NON_INODE_OWNER(owner) &&
+                          owner != XFS_RMAP_OWN_FS) {
                        do_warn(
 _("invalid owner %lld in record %u of %s\n"),
                                (long long int)owner, i, name);