Message ID | 20241011-work-overlayfs-v1-0-e34243841279@kernel.org (mailing list archive) |
---|---|
Headers | show |
Series | ovl: specify layers via file descriptors | expand |
On Fri, 11 Oct 2024 at 17:43, Christian Brauner <brauner@kernel.org> wrote: > The mount api doesn't allow overloading of mount option parameters > (except for strings and flags). Making this work for arbitrary > parameters would be quite ugly or file descriptors would have to be > special cased. Neither is very appealing. I do prefer the *_fd mount > options because they aren't ambiguous. But the fd's just represent a path (they can be O_PATH, right?) So upperdir and upperdir_fd are exactly the same options, no? Just the representation is different. Am I missing something? Thanks, Miklos
> But the fd's just represent a path (they can be O_PATH, right?) > > So upperdir and upperdir_fd are exactly the same options, no? Just > the representation is different. So I misread the code which lead me to believe that aliasing would be more involved but it really isn't. Just give me a minute to fix this.
Hey, Currently overlayfs only allows specifying layers through path names. This is inconvenient for users such as systemd that want to assemble an overlayfs mount purely based on file descriptors. When porting overlayfs to the new mount api I already provided patches for this but we decided to keep this work separate. This is a revamp of the patchset as the use-case has become more urgent. This introduces the new mount options: lowerdir_fd+ datadir_fd+ upperdir_fd workdir_fd which can be used as follows: fsconfig(fd_overlay, FSCONFIG_SET_FD, "upperdir_fd+", NULL, fd_upper); fsconfig(fd_overlay, FSCONFIG_SET_FD, "workdir_fd+", NULL, fd_work); fsconfig(fd_overlay, FSCONFIG_SET_FD, "lowerdir_fd+", NULL, fd_lower1); fsconfig(fd_overlay, FSCONFIG_SET_FD, "lowerdir_fd+", NULL, fd_lower2); The selftest contains an example for this. The mount api doesn't allow overloading of mount option parameters (except for strings and flags). Making this work for arbitrary parameters would be quite ugly or file descriptors would have to be special cased. Neither is very appealing. I do prefer the *_fd mount options because they aren't ambiguous. Signed-off-by: Christian Brauner <brauner@kernel.org> --- Christian Brauner (3): ovl: specify layers via file descriptors selftests: use shared header selftests: add overlayfs fd mounting selftests fs/overlayfs/params.c | 132 +++++++++++++++++---- .../selftests/filesystems/overlayfs/.gitignore | 1 + .../selftests/filesystems/overlayfs/Makefile | 2 +- .../selftests/filesystems/overlayfs/dev_in_maps.c | 27 +---- .../filesystems/overlayfs/set_layers_via_fds.c | 122 +++++++++++++++++++ .../selftests/filesystems/overlayfs/wrappers.h | 47 ++++++++ 6 files changed, 281 insertions(+), 50 deletions(-) --- base-commit: 8cf0b93919e13d1e8d4466eb4080a4c4d9d66d7b change-id: 20241011-work-overlayfs-dbcfa9223e87