mirror of
https://github.com/torvalds/linux.git
synced 2024-09-20 15:03:04 +00:00
btrfs: zoned: add ASSERT and WARN for EXTENT_BUFFER_ZONED_ZEROOUT handling
Add an ASSERT to catch a faulty delayed reference item resulting from prematurely cleared extent buffer. Also, add a WARN to detect if we try to dirty a ZEROOUT buffer again, which is suspicious as its update will be lost. Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
6887938618
commit
073bda7a54
|
@ -3464,6 +3464,14 @@ void btrfs_free_tree_block(struct btrfs_trans_handle *trans,
|
|||
if (root_id != BTRFS_TREE_LOG_OBJECTID) {
|
||||
struct btrfs_ref generic_ref = { 0 };
|
||||
|
||||
/*
|
||||
* Assert that the extent buffer is not cleared due to
|
||||
* EXTENT_BUFFER_ZONED_ZEROOUT. Please refer
|
||||
* btrfs_clear_buffer_dirty() and btree_csum_one_bio() for
|
||||
* detail.
|
||||
*/
|
||||
ASSERT(btrfs_header_bytenr(buf) != 0);
|
||||
|
||||
btrfs_init_generic_ref(&generic_ref, BTRFS_DROP_DELAYED_REF,
|
||||
buf->start, buf->len, parent,
|
||||
btrfs_header_owner(buf));
|
||||
|
|
|
@ -4193,6 +4193,7 @@ void set_extent_buffer_dirty(struct extent_buffer *eb)
|
|||
num_folios = num_extent_folios(eb);
|
||||
WARN_ON(atomic_read(&eb->refs) == 0);
|
||||
WARN_ON(!test_bit(EXTENT_BUFFER_TREE_REF, &eb->bflags));
|
||||
WARN_ON(test_bit(EXTENT_BUFFER_ZONED_ZEROOUT, &eb->bflags));
|
||||
|
||||
if (!was_dirty) {
|
||||
bool subpage = eb->fs_info->nodesize < PAGE_SIZE;
|
||||
|
|
Loading…
Reference in New Issue
Block a user