]> 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>
Mon, 12 Aug 2024 21:19:23 +0000 (14:19 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Wed, 14 Aug 2024 03:08:24 +0000 (20:08 -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 5800201b4a0c30091100a4c165dc2afe0796e9ff..31587eb803e24a4a4ad23868bf01f44fd9a296dc 100644 (file)
@@ -1405,9 +1405,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);