diff options
author | Nikolay Borisov <nborisov@suse.com> | 2022-03-07 14:30:02 +0100 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2022-03-14 13:13:54 +0100 |
commit | d3e29967079c522ce1c5cab0e9fab2c280b977eb (patch) | |
tree | bf895d0131bffbbd0c7a5cd40ba497ddee137037 | |
parent | btrfs: don't access possibly stale fs_info data in device_list_add (diff) | |
download | linux-d3e29967079c522ce1c5cab0e9fab2c280b977eb.tar.xz linux-d3e29967079c522ce1c5cab0e9fab2c280b977eb.zip |
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: be1a1d7a5d24 ("btrfs: zoned: finish fully written block group")
CC: stable@vger.kernel.org # 5.16+
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Nikolay Borisov <nborisov@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
-rw-r--r-- | fs/btrfs/extent_io.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c index 3f13ff0affdb..78486bbd1ac9 100644 --- a/fs/btrfs/extent_io.c +++ b/fs/btrfs/extent_io.c @@ -4786,11 +4786,12 @@ static int submit_eb_page(struct page *page, struct writeback_control *wbc, return ret; } if (cache) { - /* Impiles write in zoned mode */ - btrfs_put_block_group(cache); - /* Mark the last eb in a block group */ + /* + * Implies write in zoned mode. Mark the last eb in a block group. + */ if (cache->seq_zone && eb->start + eb->len == cache->zone_capacity) set_bit(EXTENT_BUFFER_ZONE_FINISH, &eb->bflags); + btrfs_put_block_group(cache); } ret = write_one_eb(eb, wbc, epd); free_extent_buffer(eb); |