lkml.org 
[lkml]   [2022]   [Aug]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.18 1029/1095] btrfs: zoned: activate necessary block group
    Date
    From: Naohiro Aota <naohiro.aota@wdc.com>

    [ Upstream commit b6a98021e4019c562a23ad151a7e40adfa9f91e5 ]

    There are two places where allocating a chunk is not enough. These two
    places are trying to ensure the space by allocating a chunk. To meet the
    condition for active_total_bytes, we also need to activate a block group
    there.

    CC: stable@vger.kernel.org # 5.16+
    Fixes: afba2bc036b0 ("btrfs: zoned: implement active zone tracking")
    Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    fs/btrfs/block-group.c | 16 ++++++++++++++++
    1 file changed, 16 insertions(+)

    diff --git a/fs/btrfs/block-group.c b/fs/btrfs/block-group.c
    index 88f59a2e4113..0c7fe3142d7c 100644
    --- a/fs/btrfs/block-group.c
    +++ b/fs/btrfs/block-group.c
    @@ -2659,6 +2659,14 @@ int btrfs_inc_block_group_ro(struct btrfs_block_group *cache,
    ret = btrfs_chunk_alloc(trans, alloc_flags, CHUNK_ALLOC_FORCE);
    if (ret < 0)
    goto out;
    + /*
    + * We have allocated a new chunk. We also need to activate that chunk to
    + * grant metadata tickets for zoned filesystem.
    + */
    + ret = btrfs_zoned_activate_one_bg(fs_info, cache->space_info, true);
    + if (ret < 0)
    + goto out;
    +
    ret = inc_block_group_ro(cache, 0);
    if (ret == -ETXTBSY)
    goto unlock_out;
    @@ -3853,6 +3861,14 @@ static void reserve_chunk_space(struct btrfs_trans_handle *trans,
    if (IS_ERR(bg)) {
    ret = PTR_ERR(bg);
    } else {
    + /*
    + * We have a new chunk. We also need to activate it for
    + * zoned filesystem.
    + */
    + ret = btrfs_zoned_activate_one_bg(fs_info, info, true);
    + if (ret < 0)
    + return;
    +
    /*
    * If we fail to add the chunk item here, we end up
    * trying again at phase 2 of chunk allocation, at
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-08-16 01:30    [W:3.474 / U:1.420 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site