From: Qu Wenruo <wqu@suse.com>
To: linux-btrfs@vger.kernel.org
Cc: dsterba@suse.cz
Subject: [PATCH v2 00/12] mkfs: Quota support through -R|--runtime quota
Date: Tue, 7 Nov 2017 16:42:44 +0800 [thread overview]
Message-ID: <20171107084259.22367-1-wqu@suse.com> (raw)
Can be fetched from github:
https://github.com/adam900710/btrfs-progs/tree/mkfs_qgroup
This patchset adds quota support, which means the result fs will have
quota enabled by default, and its accounting is already consistent, no
manually rescan or quota enable is needed.
The overall design of such support is:
1) Create needed tree
Both btrfs_root and real root item and tree root leaf.
For this, a new infrastructure, btrfs_create_tree(), is added for
this.
2) Fill quota root with basic skeleton
Only 3 items are really needed
a) global quota status item
b) quota info for specified qgroup
c) quota limit for specified qgroup
Currently only 0/5 qgroup is passed.
If we're going to support extra subvolume at mkfs time, just pass the
subvolume id into insert_qgroup_items().
The content doesn't matter at all.
3) Repair qgroups using infrastructure from qgroup-verify
In fact, qgroup repair is just offline rescan.
Although the original qgroup-verify infrastructure is mostly noisy,
modify it a little to make it silent to function as offline quota
rescan.
And such support is mainly designed for developers and QA guys.
As to enable quota, before we must normally mount the fs, enable quota
(and rescan if needed).
This ioctl based procedure is not common, and fstests doesn't provide
such support.
There are several attempts to make fstests to support it, but due to
different reasons, all these attempts failed.
To make it easier to test all existing test cases with btrfs quota
enabled, the current best method is to support quota at mkfs time, and
here comes the patchset.
BTW with -R|--runtime-features, we have several possible target to add.
Not limited to such ioctl based operation, but also mount option based
ones.
Like space-cache-tree (space_cache=v2).
Qu Wenruo (12):
btrfs-progs: qgroup-verify: Also repair qgroup status version
btrfs-progs: qgroup-verify: Use fs_info->readonly to check if we
should repair qgroups
btrfs-progs: qgroup-verify: Move qgroup classification out of
report_qgroups
btrfs-progs: qgroup-verify: Allow repair_qgroups function to do silent
repair
btrfs-progs: ctree: Introduce function to create an empty tree
btrfs-progs: mkfs: Introduce function to insert qgroup info and limit
items
^^^ Above patches are not modified at all ^^^
vvv Modification starts below vvv
btrfs-progs: mkfs: Introduce function to setup quota root and rescan
btrfs-progs: fsfeatures: Introduce a new set of features,
runtime_features
btrfs-progs: mkfs: Introduce --runtime-features option
btrfs-progs: mkfs: Introduce quota runtime feature
btrfs-progs: test/mkfs: Add test case for -R quota option
btrfs-progs: test/mkfs: Add test case for --rootdir and -R quota
Documentation/mkfs.btrfs.asciidoc | 23 +++
cmds-check.c | 2 +-
convert/main.c | 4 +-
ctree.c | 109 ++++++++++++++
ctree.h | 3 +
fsfeatures.c | 131 ++++++++++++++---
fsfeatures.h | 10 +-
mkfs/main.c | 194 ++++++++++++++++++++++---
qgroup-verify.c | 51 +++++--
qgroup-verify.h | 2 +-
tests/mkfs-tests/001-basic-profiles/test.sh | 10 ++
tests/mkfs-tests/010-rootdir-and-quota/test.sh | 51 +++++++
12 files changed, 529 insertions(+), 61 deletions(-)
create mode 100755 tests/mkfs-tests/010-rootdir-and-quota/test.sh
--
2.15.0
next reply other threads:[~2017-11-07 8:43 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-07 8:42 Qu Wenruo [this message]
2017-11-07 8:42 ` [PATCH 1/3] btrfs-progs: mkfs: Introduce quota runtime feature Qu Wenruo
2017-11-07 8:42 ` [PATCH v2 01/12] btrfs-progs: qgroup-verify: Also repair qgroup status version Qu Wenruo
2017-11-07 8:42 ` [PATCH v2 02/12] btrfs-progs: qgroup-verify: Use fs_info->readonly to check if we should repair qgroups Qu Wenruo
2017-11-07 8:42 ` [PATCH 2/3] btrfs-progs: test/mkfs: Add test case for -R quota option Qu Wenruo
2017-11-07 8:42 ` [PATCH v2 03/12] btrfs-progs: qgroup-verify: Move qgroup classification out of report_qgroups Qu Wenruo
2017-11-07 8:42 ` [PATCH 3/3] btrfs-progs: test/mkfs: Add test case for --rootdir and -R quota Qu Wenruo
2017-11-07 8:42 ` [PATCH v2 04/12] btrfs-progs: qgroup-verify: Allow repair_qgroups function to do silent repair Qu Wenruo
2017-11-07 8:42 ` [PATCH v2 05/12] btrfs-progs: ctree: Introduce function to create an empty tree Qu Wenruo
2017-11-07 8:42 ` [PATCH v2 06/12] btrfs-progs: mkfs: Introduce function to insert qgroup info and limit items Qu Wenruo
2017-11-07 8:42 ` [PATCH v2 07/12] btrfs-progs: mkfs: Introduce function to setup quota root and rescan Qu Wenruo
2017-11-07 8:42 ` [PATCH v2 08/12] btrfs-progs: fsfeatures: Introduce a new set of features, runtime_features Qu Wenruo
2017-11-07 8:42 ` [PATCH v2 09/12] btrfs-progs: mkfs: Introduce --runtime-features option Qu Wenruo
2017-11-07 8:42 ` [PATCH v2 10/12] btrfs-progs: mkfs: Introduce quota runtime feature Qu Wenruo
2017-11-07 8:42 ` [PATCH v2 11/12] btrfs-progs: test/mkfs: Add test case for -R quota option Qu Wenruo
2017-11-07 8:42 ` [PATCH v2 12/12] btrfs-progs: test/mkfs: Add test case for --rootdir and -R quota Qu Wenruo
2018-01-11 6:04 ` [PATCH v2 00/12] mkfs: Quota support through -R|--runtime quota Qu Wenruo
2018-03-08 1:17 ` Qu Wenruo
2018-07-30 5:03 ` Qu Wenruo
2018-08-07 7:02 ` Lu Fengqi
2018-08-07 7:03 ` Qu Wenruo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20171107084259.22367-1-wqu@suse.com \
--to=wqu@suse.com \
--cc=dsterba@suse.cz \
--cc=linux-btrfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).