Skip to content

mkfs: Quota support through -R|--runtime quota

Qu Wenruo linux-btrfs 3 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v1 posting 2/212 patches 0 repliesNew
  2. v2 Latest12 patches 5 repliesIn review
  3. v1 posting 1/28 patches 6 repliesSuperseded

Patches in v2 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/12btrfs-progs: qgroup-verify: Also repair qgroup status versionctree.h qgroup-verify.c+3 -00 replies
2/12btrfs-progs: qgroup-verify: Use fs_info->readonly to check if we should repair qgroupsqgroup-verify.c+1 -10 replies
3/12btrfs-progs: qgroup-verify: Move qgroup classification out of report_qgroupsqgroup-verify.c+26 -20 replies
4/12btrfs-progs: qgroup-verify: Allow repair_qgroups function to do silent repaircmds-check.c qgroup-verify.c qgroup-verify.h+13 -100 replies
5/12btrfs-progs: ctree: Introduce function to create an empty treectree.c ctree.h+111 -00 replies
6/12btrfs-progs: mkfs: Introduce function to insert qgroup info and limit itemsmkfs/main.c+34 -00 replies
7/12btrfs-progs: mkfs: Introduce function to setup quota root and rescanmkfs/main.c+86 -00 replies
8/12btrfs-progs: fsfeatures: Introduce a new set of features, runtime_featuresconvert/main.c fsfeatures.c fsfeatures.h +1 more+114 -280 replies
9/12btrfs-progs: mkfs: Introduce --runtime-features optionDocumentation/mkfs.btrfs.asciidoc mkfs/main.c+60 -200 replies
10/12btrfs-progs: mkfs: Introduce quota runtime featureDocumentation/mkfs.btrfs.asciidoc fsfeatures.c fsfeatures.h +1 more+20 -00 replies
11/12btrfs-progs: test/mkfs: Add test case for -R quota optiontests/mkfs-tests/001-basic-profiles/test.sh+10 -00 replies
12/12btrfs-progs: test/mkfs: Add test case for --rootdir and -R quotatests/mkfs-tests/010-rootdir-and-quota/test.sh+51 -00 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v2 yet.

Read the v2 thread

Cover letter [PATCH v2 00/12] mkfs: Quota support through -R|--runtime quota

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
Signature · 1 line
2.15.0