btrfs: reset RO counter on block group if we fail to relocate
authorJosef Bacik <josef@toxicpanda.com>
Mon, 25 Jul 2022 17:05:05 +0000 (13:05 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 Aug 2022 09:39:56 +0000 (11:39 +0200)
commit7ac430e319e928684f6ed471236fb480eba0ef98
tree52210d1cfcc37ac4997cd77f89d0e03446c7b843
parent78f8c2370e3d33e35f23bdc648653d779aeacb6e
btrfs: reset RO counter on block group if we fail to relocate

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