From ca351d389ff8a497ea4be81b80e97eca20137f86 Mon Sep 17 00:00:00 2001 From: Zygo Blaxell Date: Wed, 18 Dec 2024 23:32:09 -0500 Subject: [PATCH] extent scan: pick the right block groups for mixed-bg filesystems The progress indicator was failing on a mixed-bg filesystem because those filesystems have block groups which have both _DATA and _METADATA bits, and the filesystem size calculation was excluding block groups that have _METADATA set. It should exclude block groups that have _DATA not set. Signed-off-by: Zygo Blaxell --- src/bees-roots.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/bees-roots.cc b/src/bees-roots.cc index 2cd70b8..02faa7f 100644 --- a/src/bees-roots.cc +++ b/src/bees-roots.cc @@ -970,7 +970,9 @@ BeesScanModeExtent::next_transid(const CrawlMap &crawl_map_unused) .first_bytenr = offset, .first_total = fs_size, }; - if (bti.chunk_type() & (BTRFS_BLOCK_GROUP_METADATA | BTRFS_BLOCK_GROUP_SYSTEM)) { + // Mixed-bg filesystems have block groups that are data _and_ metadata. + // Block groups that are _only_ metadata should be filtered out. + if (0 == (bti.chunk_type() & BTRFS_BLOCK_GROUP_DATA)) { continue; } fs_size += chunk_length;