Commit d3e29967 authored by Nikolay Borisov's avatar Nikolay Borisov Committed by David Sterba

btrfs: zoned: put block group after final usage

It's counter-intuitive (and wrong) to put the block group _before_ the
final usage in submit_eb_page. Fix it by re-ordering the call to
btrfs_put_block_group after its final reference. Also fix a minor typo
in 'implies'

Fixes: be1a1d7a ("btrfs: zoned: finish fully written block group")
CC: stable@vger.kernel.org # 5.16+
Reviewed-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: default avatarNikolay Borisov <nborisov@suse.com>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 79c9234b
...@@ -4786,11 +4786,12 @@ static int submit_eb_page(struct page *page, struct writeback_control *wbc, ...@@ -4786,11 +4786,12 @@ static int submit_eb_page(struct page *page, struct writeback_control *wbc,
return ret; return ret;
} }
if (cache) { if (cache) {
/* Impiles write in zoned mode */ /*
btrfs_put_block_group(cache); * Implies write in zoned mode. Mark the last eb in a block group.
/* Mark the last eb in a block group */ */
if (cache->seq_zone && eb->start + eb->len == cache->zone_capacity) if (cache->seq_zone && eb->start + eb->len == cache->zone_capacity)
set_bit(EXTENT_BUFFER_ZONE_FINISH, &eb->bflags); set_bit(EXTENT_BUFFER_ZONE_FINISH, &eb->bflags);
btrfs_put_block_group(cache);
} }
ret = write_one_eb(eb, wbc, epd); ret = write_one_eb(eb, wbc, epd);
free_extent_buffer(eb); free_extent_buffer(eb);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment