2013/2/22 Arne Jansen <sensi...@gmx.net>: > On 02/22/13 13:02, Wang Shilong wrote: >> From: Wang Shilong <wangsl-f...@cn.fujitsu.com> >> >> Creating the root subvolume qgroup when enabling quota,with > > Why only create a qgroup for the root subvolume and not for > every existing subvolume? >
Yes,You are right. Creating all the existed subvolume qgroup is necessary when enabling quota since we try to prevent creating group level 0...the subvolume/snapshot group should be operated automatically... Atfer this work. I think it is necessary to delete the subvolume/snapshot qgroup as the deletion of sub volume/snapshot. BTW, there is a thing to think about... During enabling quota...No new subvolume should be created before the enabling quota is done. I will try to implement such functions..... >> this patch,it will be ok to limit the whole filesystem size. > > This will not limit the whole filesystem, but only the root > subvolume. To limit the whole filesystem you'd have to create > a level 1 qgroup and add all subvolumes to it. > Right, thanks for correcting it... Thanks, Wang > -Arne > >> >> Signed-off-by: Wang Shilong <wangsl-f...@cn.fujitsu.com> >> Reviewed-by: Miao Xie <mi...@cn.fujitsu.com> >> Cc: Arne Jansen <sensi...@gmx.net> >> --- >> fs/btrfs/qgroup.c | 12 ++++++++++++ >> 1 files changed, 12 insertions(+), 0 deletions(-) >> >> diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c >> index a5c8562..c409096 100644 >> --- a/fs/btrfs/qgroup.c >> +++ b/fs/btrfs/qgroup.c >> @@ -777,6 +777,7 @@ int btrfs_quota_enable(struct btrfs_trans_handle *trans, >> struct extent_buffer *leaf; >> struct btrfs_key key; >> int ret = 0; >> + struct btrfs_qgroup *qgroup = NULL; >> >> spin_lock(&fs_info->qgroup_lock); >> if (fs_info->quota_root) { >> @@ -823,7 +824,18 @@ int btrfs_quota_enable(struct btrfs_trans_handle *trans, >> >> btrfs_mark_buffer_dirty(leaf); >> >> + btrfs_release_path(path); >> + ret = add_qgroup_item(trans, quota_root, BTRFS_FS_TREE_OBJECTID); >> + if (ret) >> + goto out; >> + >> spin_lock(&fs_info->qgroup_lock); >> + qgroup = add_qgroup_rb(fs_info, BTRFS_FS_TREE_OBJECTID); >> + if (IS_ERR(qgroup)) { >> + spin_unlock(&fs_info->qgroup_lock); >> + ret = PTR_ERR(qgroup); >> + goto out; >> + } >> fs_info->quota_root = quota_root; >> fs_info->pending_quota_state = 1; >> spin_unlock(&fs_info->qgroup_lock); >> > -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html