summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Sterba <dsterba@suse.com>2015-07-27 17:36:03 +0200
committerDavid Sterba <dsterba@suse.com>2015-08-31 19:25:11 +0200
commitc78f3eea947cafe2a233cb10c3e151a6ea7f4729 (patch)
tree4e621f4fb2cf0267eeb74a06e5685230fb6ca413
parente5a6610c943b0cdc29054dc2d247e7477019310d (diff)
btrfs-progs: doc: update qgroup docs
Signed-off-by: David Sterba <dsterba@suse.com>
-rw-r--r--Documentation/btrfs-qgroup.asciidoc24
-rw-r--r--cmds-qgroup.c8
2 files changed, 18 insertions, 14 deletions
diff --git a/Documentation/btrfs-qgroup.asciidoc b/Documentation/btrfs-qgroup.asciidoc
index cd7192c0..57cf012d 100644
--- a/Documentation/btrfs-qgroup.asciidoc
+++ b/Documentation/btrfs-qgroup.asciidoc
@@ -11,25 +11,29 @@ SYNOPSIS
DESCRIPTION
-----------
-*btrfs qgroup* is used to control quota group(qgroup) of a btrfs filesystem.
+*btrfs qgroup* is used to control quota group (qgroup) of a btrfs filesystem.
-NOTE: To use qgroup, it needs to enable quota first using *btrfs quota*
+NOTE: To use qgroup you need to enable quota first using *btrfs quota enable*
command.
WARNING: Qgroup is not stable yet and will impact performance in current mainline
-kernel(v3.14 so far).
+kernel (v3.14 so far).
QGROUP
------
-Quota group or qgroup in btrfs has its hierarchy like subvolume.
-One subvolume/snapshot can reach its quota limits if it consumes all the quota
-assigned to it or any of the parent qgroup(s).
+Quota groups or qgroup in btrfs make a tree hierarchy, the leaf qgroups are
+attached to subvolumes. The size limits are set per qgroup and apply when any
+limit is reached in tree that contains a given subvolume.
-Also for snapshot, it consumes no quota initially since all its data
-shares with its parent, so only modification in snapshot consumes quota.
+The limit sare separated between shared and exclusive and reflect the extent
+ownership. For example a fresh snapshot shares almost all the blocks with the
+original subvolume, new writes to either subvolume will raise towards the
+exclusive limit.
-Every subvolume/snapshot will have its own qgroup with id '0/<subvolume id>'
-upon creating, but can be later destroyed by *btrfs qgroup destroy* command.
+The qgroup identifiers conform to 'level/id' where level 0 is reserved to the
+qgroups associated with subvolumes. Such qgroups are created automatically.
+
+The qgroup hierarchy is built by commands *create* and *assign*.
NOTE: If the qgroup of a subvolume is destroyed, quota about the subvolume
will not be functional until qgroup '0/<subvolume id>' is created again.
diff --git a/cmds-qgroup.c b/cmds-qgroup.c
index 4a8b8d23..d58df5e1 100644
--- a/cmds-qgroup.c
+++ b/cmds-qgroup.c
@@ -206,7 +206,7 @@ static int parse_limit(const char *p, unsigned long long *s)
static const char * const cmd_qgroup_assign_usage[] = {
"btrfs qgroup assign [options] <src> <dst> <path>",
- "Enable subvolume qgroup support for a filesystem.",
+ "Assign SRC as the child qgroup of DST",
"",
"--rescan schedule qutoa rescan if needed",
"--no-rescan ",
@@ -223,7 +223,7 @@ static int cmd_qgroup_assign(int argc, char **argv)
static const char * const cmd_qgroup_remove_usage[] = {
"btrfs qgroup remove <src> <dst> <path>",
- "Remove a subvol from a quota group.",
+ "Remove a child qgroup SRC from DST.",
NULL
};
@@ -251,7 +251,7 @@ static int cmd_qgroup_create(int argc, char **argv)
static const char * const cmd_qgroup_destroy_usage[] = {
"btrfs qgroup destroy <qgroupid> <path>",
- "Destroy a subvolume quota group.",
+ "Destroy a quota group.",
NULL
};
@@ -419,7 +419,7 @@ static int cmd_qgroup_show(int argc, char **argv)
static const char * const cmd_qgroup_limit_usage[] = {
"btrfs qgroup limit [options] <size>|none [<qgroupid>] <path>",
- "Limit the size of a subvolume quota group.",
+ "Set the limits a subvolume quota group.",
"",
"-c limit amount of data after compression. This is the default,",
" it is currently not possible to turn off this option.",