bcachefs: New discard implementation
authorKent Overstreet <kent.overstreet@gmail.com>
Thu, 10 Feb 2022 09:32:19 +0000 (04:32 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:29 +0000 (17:09 -0400)
commit59cc38b8d43b529d91c249c2eef35c8c3fc9fbd8
treec67cba1b5df87df0606070046a2a0420e0f60d29
parentf25d8215f499418c17dfde0b3158a66e03c758dc
bcachefs: New discard implementation

In the old allocator code, buckets would be discarded just prior to
being used - this made sense in bcache where we were discarding buckets
just after invalidating the cached data they contain, but in a
filesystem where we typically have more free space we want to be
discarding buckets when they become empty.

This patch implements the new behaviour - it checks the need_discard
btree for buckets awaiting discards, and then clears the appropriate
bit in the alloc btree, which moves the buckets to the freespace btree.

Additionally, discards are now enabled by default.

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/alloc_background.c
fs/bcachefs/alloc_background.h
fs/bcachefs/bcachefs.h
fs/bcachefs/buckets.c
fs/bcachefs/journal_io.c
fs/bcachefs/opts.h
fs/bcachefs/super.c
fs/bcachefs/trace.h