bcachefs: Use KEY_TYPE_deleted whitouts for extents
authorKent Overstreet <kent.overstreet@gmail.com>
Tue, 26 Nov 2019 22:26:04 +0000 (17:26 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:08:33 +0000 (17:08 -0400)
commitbcd6f3e06fe4f039e1526a0ff5bc3ebbc2405e10
treea284f68b3448de48129ed3be534ef1f7a455f00a
parent1c3ff72c0fa94651a226d3351d9df89d5eafd2d7
bcachefs: Use KEY_TYPE_deleted whitouts for extents

Previously, partial overwrites of existing extents were handled
implicitly by the btree code; when reading in a btree node, we'd do a
mergesort of the different bsets and detect and fix partially
overlapping extents during that mergesort.

That approach won't work with snapshots: this changes extents to work
like regular keys as far as the btree code is concerned, where a 0 size
KEY_TYPE_deleted whiteout will completely overwrite an existing extent.

Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/bcachefs_format.h
fs/bcachefs/bkey_sort.c
fs/bcachefs/btree_io.c
fs/bcachefs/btree_types.h
fs/bcachefs/btree_update_interior.c
fs/bcachefs/btree_update_leaf.c
fs/bcachefs/extent_update.c
fs/bcachefs/recovery.c