]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
xfs: walk the rt reference count tree when rebuilding rmap
authorDarrick J. Wong <djwong@kernel.org>
Thu, 21 Nov 2024 00:21:12 +0000 (16:21 -0800)
committerDarrick J. Wong <djwong@kernel.org>
Mon, 23 Dec 2024 21:06:16 +0000 (13:06 -0800)
When we're rebuilding the data device rmap, if we encounter a "refcount"
format fork, we have to walk the (realtime) refcount btree inode to
build the appropriate mappings.

Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
fs/xfs/scrub/rmap_repair.c

index c2c7b76cc25ab8e04562d4221d49e77986e5e966..f5f73078ffe29d3932635d49e6b08ed6c2ac0dc4 100644 (file)
@@ -33,6 +33,7 @@
 #include "xfs_ag.h"
 #include "xfs_rtrmap_btree.h"
 #include "xfs_rtgroup.h"
+#include "xfs_rtrefcount_btree.h"
 #include "scrub/xfs_scrub.h"
 #include "scrub/scrub.h"
 #include "scrub/common.h"
@@ -519,6 +520,9 @@ xrep_rmap_scan_meta_btree(
        case XFS_METAFILE_RTRMAP:
                type = XFS_RTGI_RMAP;
                break;
+       case XFS_METAFILE_RTREFCOUNT:
+               type = XFS_RTGI_REFCOUNT;
+               break;
        default:
                ASSERT(0);
                return -EFSCORRUPTED;
@@ -545,6 +549,9 @@ found:
        case XFS_METAFILE_RTRMAP:
                cur = xfs_rtrmapbt_init_cursor(sc->tp, rtg);
                break;
+       case XFS_METAFILE_RTREFCOUNT:
+               cur = xfs_rtrefcountbt_init_cursor(sc->tp, rtg);
+               break;
        default:
                ASSERT(0);
                error = -EFSCORRUPTED;