From: Qu Wenruo <wqu@suse.com>
To: linux-btrfs@vger.kernel.org
Subject: [PATCH v2 0/9] btrfs-progs: mkfs: introduce an experimental --subvol option
Date: Fri, 20 Oct 2023 08:59:59 +1030 [thread overview]
Message-ID: <cover.1697754500.git.wqu@suse.com> (raw)
[CHANGELOG]
v2:
- Crossport fs_types from kernel
So that we can have infrastructure more in-line with kernel code.
Unfortunately we still need a new fs_ftypes_to_umode() helper for
progs.
- More cleanups for btrfs_add_link()
- Make btrfs_add_link() have the same ability of the kernel one
This is to allow btrfs_add_link() to link a subvolume to a parent
inode.
Unfortunately the parameter list is still quite different due to the
lack of btrfs_inode and dentry.
- Merge btrfs_mksubvol() into btrfs_add_link()
Since btrfs_add_link() can now handle linking of a subvolume, we
can remove the progs specific code.
- New common/inode.[ch] for btrfs_create_subvol() and
btrfs_make_root_dir()
Those two functions are progs specific and would be utilized by code
out of check/convert. Thus moving them to common/ would be better
Issue #42 (good number by the way) is suggesting a very useful feature
for rootfs image creation.
Currently we only support "mkfs.btrfs --rootdir" to fill the fs tree
with target directory, but there has no btrfs specific features
involved.
If we can create certain paths as subvolumes, not pure directories, it
can be very useful to create the whole btrfs image just by "mkfs.btrfs"
This series is the first step torwards this idea.
Now we have a new experimental option "--subvol" for mkfs.btrfs, but
with the following limits:
- No co-operation with --rootdir
This requires --rootdir to have extra handling for any existing
inodes.
(Currently --rootdir assumes the fs tree is completely empty)
- No multiple --subvol options supports
This requires us to collect and sort all the paths and start creating
subvolumes from the shortest path.
Furthermore this requires us to create subvolume under another
subvolume.
Each limit would need a new series of patches to address, but this
series would already provide a working but not-that-useful
implementation of "--subvol" option, along with a basic test case for
it.
Qu Wenruo (9):
btrfs-progs: cross-port fs_types from kernel
btrfs-progs: remove add_backref parameter from btrfs_add_link()
btrfs-progs: remove filetype parameter of btrfs_add_link()
btrfs-progs: merge btrfs_mksubvol() into btrfs_add_link()
btrfs-progs: enhance btrfs_mkdir() function
btrfs-progs: enhance btrfs_create_root() function
btrfs-progs: use a unified btrfs_make_subvol() implementation
btrfs-progs: mkfs: introduce experimental --subvol option
btrfs-progs: mkfs-tests: introduce a test case to verify --subvol
option
Makefile | 2 +
check/main.c | 17 +-
check/mode-common.c | 12 +-
check/mode-common.h | 32 --
check/mode-lowmem.c | 40 ++-
common/inode.c | 90 ++++++
common/inode.h | 16 +
convert/main.c | 139 ++++++---
include/kerncompat.h | 1 +
kernel-shared/ctree.c | 106 +++----
kernel-shared/ctree.h | 17 +-
kernel-shared/fs_types.c | 62 ++++
kernel-shared/fs_types.h | 87 ++++++
kernel-shared/inode.c | 347 ++++++++++-----------
mkfs/common.c | 39 ---
mkfs/common.h | 2 -
mkfs/main.c | 106 ++-----
mkfs/rootdir.c | 157 ++++++++++
mkfs/rootdir.h | 1 +
tests/mkfs-tests/031-subvol-option/test.sh | 39 +++
tune/convert-bgt.c | 3 +-
tune/quota.c | 2 +-
22 files changed, 829 insertions(+), 488 deletions(-)
create mode 100644 common/inode.c
create mode 100644 common/inode.h
create mode 100644 kernel-shared/fs_types.c
create mode 100644 kernel-shared/fs_types.h
create mode 100755 tests/mkfs-tests/031-subvol-option/test.sh
--
2.42.0
next reply other threads:[~2023-10-19 22:30 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-19 22:29 Qu Wenruo [this message]
2023-10-19 22:30 ` [PATCH v2 1/9] btrfs-progs: cross-port fs_types from kernel Qu Wenruo
2023-10-19 22:30 ` [PATCH v2 2/9] btrfs-progs: remove add_backref parameter from btrfs_add_link() Qu Wenruo
2023-10-19 22:30 ` [PATCH v2 3/9] btrfs-progs: remove filetype parameter of btrfs_add_link() Qu Wenruo
2023-10-19 22:30 ` [PATCH v2 4/9] btrfs-progs: merge btrfs_mksubvol() into btrfs_add_link() Qu Wenruo
2023-10-19 22:30 ` [PATCH v2 5/9] btrfs-progs: enhance btrfs_mkdir() function Qu Wenruo
2023-10-19 22:30 ` [PATCH v2 6/9] btrfs-progs: enhance btrfs_create_root() function Qu Wenruo
2023-10-19 22:30 ` [PATCH v2 7/9] btrfs-progs: use a unified btrfs_make_subvol() implementation Qu Wenruo
2023-10-19 22:30 ` [PATCH v2 8/9] btrfs-progs: mkfs: introduce experimental --subvol option Qu Wenruo
2023-10-19 22:30 ` [PATCH v2 9/9] btrfs-progs: mkfs-tests: introduce a test case to verify " 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=cover.1697754500.git.wqu@suse.com \
--to=wqu@suse.com \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.