lkml.org 
[lkml]   [2022]   [Aug]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.19 019/365] btrfs: reset RO counter on block group if we fail to relocate
    Date
    From: Josef Bacik <josef@toxicpanda.com>

    commit 74944c873602a3ed8d16ff7af3f64af80c0f9dac upstream.

    With the automatic block group reclaim code we will preemptively try to
    mark the block group RO before we start the relocation. We do this to
    make sure we should actually try to relocate the block group.

    However if we hit an error during the actual relocation we won't clean
    up our RO counter and the block group will remain RO. This was observed
    internally with file systems reporting less space available from df when
    we had failed background relocations.

    Fix this by doing the dec_ro in the error case.

    Fixes: 18bb8bbf13c1 ("btrfs: zoned: automatically reclaim zones")
    CC: stable@vger.kernel.org # 5.15+
    Reviewed-by: Boris Burkov <boris@bur.io>
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    fs/btrfs/block-group.c | 4 +++-
    1 file changed, 3 insertions(+), 1 deletion(-)

    --- a/fs/btrfs/block-group.c
    +++ b/fs/btrfs/block-group.c
    @@ -1640,9 +1640,11 @@ void btrfs_reclaim_bgs_work(struct work_
    div64_u64(zone_unusable * 100, bg->length));
    trace_btrfs_reclaim_block_group(bg);
    ret = btrfs_relocate_chunk(fs_info, bg->start);
    - if (ret)
    + if (ret) {
    + btrfs_dec_block_group_ro(bg);
    btrfs_err(fs_info, "error relocating chunk %llu",
    bg->start);
    + }

    next:
    btrfs_put_block_group(bg);

    \
     
     \ /
      Last update: 2022-08-23 10:10    [W:4.084 / U:0.200 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site