From 5d8a4b4077383e916293e14add32d9e84bd7bffc Mon Sep 17 00:00:00 2001 From: "Darrick J. Wong" Date: Wed, 3 Jul 2024 14:22:33 -0700 Subject: [PATCH] xfs_repair: allow CoW staging extents in the realtime rmap records 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 --- repair/scan.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/repair/scan.c b/repair/scan.c index 6b278d1f9..8bef93c4d 100644 --- a/repair/scan.c +++ b/repair/scan.c @@ -1416,9 +1416,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); -- 2.50.1