[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