bcachefs: KEY_TYPE_alloc_v2
authorKent Overstreet <kent.overstreet@gmail.com>
Fri, 22 Jan 2021 23:01:07 +0000 (18:01 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:08:52 +0000 (17:08 -0400)
commit7f4e1d5d0faff0d72e9f6708bf98488d76533846
tree3361e403e15ee6f22f9934fef824ccef08a1a991
parent26452d1dcd4b134ecc7aeaae74f78de1c525caf3
bcachefs: KEY_TYPE_alloc_v2

This introduces a new version of KEY_TYPE_alloc, which uses the new
varint encoding introduced for inodes. This means we'll eventually be
able to support much larger bucket sizes (for SMR devices), and the
read/write time fields are expanded to 64 bits - which will be used in
the next patch to get rid of the periodic rescaling of those fields.

Also, for buckets that are members of erasure coded stripes, this adds
persistent fields for the index of the stripe they're members of and the
stripe redundancy. This is part of work to get rid of having to scan and
read into memory the alloc and stripes btrees at mount time.

Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/alloc_background.c
fs/bcachefs/alloc_background.h
fs/bcachefs/bcachefs_format.h
fs/bcachefs/bkey.h
fs/bcachefs/buckets.c
fs/bcachefs/buckets_types.h
fs/bcachefs/ec.c
fs/bcachefs/extents.c
fs/bcachefs/movinggc.c