]> git.baikalelectronics.ru Git - kernel.git/commit
btrfs: destroy qgroup extent records on transaction abort
authorJeff Mahoney <jeffm@suse.com>
Tue, 11 Feb 2020 07:25:37 +0000 (15:25 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 28 Feb 2020 16:22:23 +0000 (17:22 +0100)
commitd26dfd1d4b0b74a5af47ad7b9c0172a454ceb3c7
tree9d6a927f03dcc3899c2548078c84e045ea08de1b
parentfbd0efa3d350ec46b90197017345d29323f51dca
btrfs: destroy qgroup extent records on transaction abort

commit da7c7ea1318d251d282b22f8a3b6fd9a5a7df894 upstream.

We clean up the delayed references when we abort a transaction but we
leave the pending qgroup extent records behind, leaking memory.

This patch destroys the extent records when we destroy the delayed refs
and makes sure ensure they're gone before releasing the transaction.

Fixes: 46fdfa753e0f ("btrfs: qgroup: Record possible quota-related extent for qgroup.")
CC: stable@vger.kernel.org # 4.4+
Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Jeff Mahoney <jeffm@suse.com>
[ Rebased to latest upstream, remove to_qgroup() helper, use
  rbtree_postorder_for_each_entry_safe() wrapper ]
Signed-off-by: Qu Wenruo <wqu@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>
fs/btrfs/disk-io.c
fs/btrfs/qgroup.c
fs/btrfs/qgroup.h
fs/btrfs/transaction.c