[PATCH v2 0/3] btrfs: handle missing block group and raid stripe tree roots
"Dongjiang Zhu" <[email protected]>
| Newsgroups | org.kernel.vger.linux-btrfs |
|---|---|
| Message-ID | <[email protected]> |
The rescue=ignorebadroots mount option allows mounting to continue when some tree roots cannot be loaded. For the block group tree and raid stripe tree, this leaves the corresponding root pointer NULL while the on-disk feature bit remains set. btrfs_update_global_block_rsv() accounts both trees based only on their feature bits, so it dereferences the missing root while mounting. Rescue mounts are fully read-only and cannot start transactions, so they do not need a real global block reserve. This series moves the full read-only helper to fs.h and uses it to skip global reserve accounting for rescue mounts. It also reports a missing raid stripe tree root explicitly if a later data read requires a raid stripe lookup. Changes in v2: - Replace the per-root NULL checks with a dummy global block reserve for full read-only mounts, as suggested by Qu Wenruo. - Move and rename fs_is_full_ro() so the global reserve code can use it. v1: https://lore.kernel.org/linux-btrfs/[email protected]/ Dongjiang Zhu (3): btrfs: move the full read-only helper to fs.h btrfs: skip global block reserve accounting for rescue mounts btrfs: report missing raid stripe tree root during lookup fs/btrfs/block-rsv.c | 19 +++++++++++++++++-- fs/btrfs/disk-io.c | 11 +---------- fs/btrfs/fs.h | 9 +++++++++ fs/btrfs/raid-stripe-tree.c | 7 +++++++ 4 files changed, 34 insertions(+), 12 deletions(-) -- 2.39.5