[PATCH] btrfs: free qgroup configuration when quota enable fails

Guanjie Chen <[email protected]>
Newsgroups org.kernel.vger.linux-btrfs,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
Quota enable adds qgroups to fs_info->qgroup_tree before the operation is
guaranteed to succeed.  On failure, the current error path removes only the
sysfs entries, leaving the qgroups and their relations in memory.

Use btrfs_free_qgroup_config() instead.  It is the existing qgroup teardown
helper and removes the in-memory qgroups, their relations and the sysfs
entries.

This is safe because the failure cleanup runs with qgroup_ioctl_lock held
and before quota_root is published or quota accounting is enabled.  Qgroups
already added to the tree are freed by btrfs_free_qgroup_config(), while an
untransferred preallocation and quota_root are still released by the
existing cleanup code.  Transaction handling is unchanged.

Signed-off-by: Guanjie Chen <[email protected]>
---
 fs/btrfs/qgroup.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c
--- a/fs/btrfs/qgroup.c
+++ b/fs/btrfs/qgroup.c
@@ -1292,7 +1292,7 @@ out_free_root:
 		btrfs_put_root(quota_root);
 out:
 	if (ret)
-		btrfs_sysfs_del_qgroups(fs_info);
+		btrfs_free_qgroup_config(fs_info);
 	mutex_unlock(&fs_info->qgroup_ioctl_lock);
 	if (ret && trans)
 		btrfs_end_transaction(trans);
-- 
2.43.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.