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/' -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/' 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] ", - "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 ", - "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 ", - "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] |none [] ", - "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.",