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