bcachefs: bch_member.btree_allocated_bitmap
authorKent Overstreet <kent.overstreet@linux.dev>
Fri, 12 Apr 2024 22:45:47 +0000 (18:45 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Mon, 15 Apr 2024 00:02:11 +0000 (20:02 -0400)
commit27c15ed297cb71c2e7a839439b5a097081a32605
tree5c17bdfe3f11e178ffda3e2415d21a23b89b723c
parentbdae2a7e6020e1cf864a30dab2af323575569dc7
bcachefs: bch_member.btree_allocated_bitmap

This adds a small (64 bit) per-device bitmap that tracks ranges that
have btree nodes, for accelerating btree node scan if it is ever needed.

- New helpers, bch2_dev_btree_bitmap_marked() and
  bch2_dev_bitmap_mark(), for checking and updating the bitmap

- Interior btree update path updates the bitmaps when required

- The check_allocations pass has a new fsck_err check,
  btree_bitmap_not_marked

- New on disk format version, mi_btree_mitmap, which indicates the new
  bitmap is present

- Upgrade table lists the required recovery pass and expected fsck error

- Btree node scan uses the bitmap to skip ranges if we're on the new
  version

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/bcachefs_format.h
fs/bcachefs/btree_gc.c
fs/bcachefs/btree_node_scan.c
fs/bcachefs/btree_update_interior.c
fs/bcachefs/sb-downgrade.c
fs/bcachefs/sb-errors_types.h
fs/bcachefs/sb-members.c
fs/bcachefs/sb-members.h
fs/bcachefs/super_types.h