btrfs: free correct amount of space in btrfs_delayed_inode_reserve_metadata
authorNikolay Borisov <nborisov@suse.com>
Mon, 22 Feb 2021 16:40:42 +0000 (18:40 +0200)
committerDavid Sterba <dsterba@suse.com>
Tue, 2 Mar 2021 15:56:04 +0000 (16:56 +0100)
Following commit f218ea6c4792 ("btrfs: delayed-inode: Remove wrong
qgroup meta reservation calls") this function now reserves num_bytes,
rather than the fixed amount of nodesize. As such this requires the
same amount to be freed in case of failure. Fix this by adjusting
the amount we are freeing.

Fixes: f218ea6c4792 ("btrfs: delayed-inode: Remove wrong qgroup meta reservation calls")
CC: stable@vger.kernel.org # 4.19+
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>
fs/btrfs/delayed-inode.c

index ec0b50b8c5d6fe82c4bc21511a11c9ca1c3039dc..ac9966e76a2f464dafeb9e5bccc329389a9c016a 100644 (file)
@@ -649,7 +649,7 @@ static int btrfs_delayed_inode_reserve_metadata(
                                                      btrfs_ino(inode),
                                                      num_bytes, 1);
                } else {
-                       btrfs_qgroup_free_meta_prealloc(root, fs_info->nodesize);
+                       btrfs_qgroup_free_meta_prealloc(root, num_bytes);
                }
                return ret;
        }