]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/commit
btrfs: unlock extents in btrfs_zero_range in case of quota reservation errors
authorNikolay Borisov <nborisov@suse.com>
Tue, 23 Feb 2021 13:20:42 +0000 (15:20 +0200)
committerKleber Sacilotto de Souza <kleber.souza@canonical.com>
Wed, 14 Apr 2021 16:31:48 +0000 (18:31 +0200)
commit0f1bd55fdec29020ad134890828bbf2c1cf695bc
tree0f9192704b6c368827813f22dcab4579c987ec9b
parent6cfcd91556673d6672789c0225b937d10930c096
btrfs: unlock extents in btrfs_zero_range in case of quota reservation errors

BugLink: https://bugs.launchpad.net/bugs/1920238
commit 4f6a49de64fd1b1dba5229c02047376da7cf24fd upstream.

If btrfs_qgroup_reserve_data returns an error (i.e quota limit reached)
the handling logic directly goes to the 'out' label without first
unlocking the extent range between lockstart, lockend. This results in
deadlocks as other processes try to lock the same extent.

Fixes: a7f8b1c2ac21 ("btrfs: file: reserve qgroup space after the hole punch range is locked")
CC: stable@vger.kernel.org # 5.10+
Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Nikolay Borisov <nborisov@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Kelsey Skunberg <kelsey.skunberg@canonical.com>
fs/btrfs/file.c