Re: [PATCH v2] btrfs: destroy qgroup extent records on transaction abort

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Feb 11, 2020 at 03:25:37PM +0800, Qu Wenruo wrote:
> From: Jeff Mahoney <jeffm@xxxxxxxx>
> 
> We clean up the delayed references when we abort a transaction but
> we leave the pending qgroup extent records behind, leaking memory.
> 
> This patch destroyes the extent records when we destroy the delayed
> refs and checks to ensure they're gone before releasing the transaction.
> 
> Fixes: 3368d001ba5df (btrfs: qgroup: Record possible quota-related extent for qgroup.)
> Signed-off-by: Jeff Mahoney <jeffm@xxxxxxxx>
> [Rebased to latest upstream, remove to_qgroup() helper, use
>  rbtree_postorder_for_each_entry_safe() wrapper]
> Signed-off-by: Qu Wenruo <wqu@xxxxxxxx>
> ---
> Changelog:
> v2:
> - Update the commit message to remove to_qgroup()

Added to misc-next, thanks.

> +void btrfs_qgroup_destroy_extent_records(struct btrfs_transaction *trans)
> +{
> +	struct btrfs_delayed_ref_root *delayed_refs = &trans->delayed_refs;
> +	struct btrfs_qgroup_extent_record *entry;
> +	struct btrfs_qgroup_extent_record *next;
> +	struct rb_root *root = &delayed_refs->dirty_extent_root;

I've removed the delayed_refs varaible indirection:

	root = &trans->delayed_refs.dirty_extent_root;

> +	rbtree_postorder_for_each_entry_safe(entry, next, root, node) {
> +		ulist_free(entry->old_roots);
> +		kfree(entry);
> +	}
> +}



[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux