mbox series

[v3,0/5] ovl: file descriptors based layer setup

Message ID 20241014-work-overlayfs-v3-0-32b3fed1286e@kernel.org (mailing list archive)
Headers show
Series ovl: file descriptors based layer setup | expand

Message

Christian Brauner Oct. 14, 2024, 9:40 a.m. UTC
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 mentioned this.
This enables user to specify both:

     fsconfig(fd_overlay, FSCONFIG_SET_FD, "upperdir+", NULL, fd_upper);
     fsconfig(fd_overlay, FSCONFIG_SET_FD, "workdir+",  NULL, fd_work);
     fsconfig(fd_overlay, FSCONFIG_SET_FD, "lowerdir+", NULL, fd_lower1);
     fsconfig(fd_overlay, FSCONFIG_SET_FD, "lowerdir+", NULL, fd_lower2);

in addition to:

     fsconfig(fd_overlay, FSCONFIG_SET_STRING, "upperdir+", "/upper",  0);
     fsconfig(fd_overlay, FSCONFIG_SET_STRING, "workdir+",  "/work",   0);
     fsconfig(fd_overlay, FSCONFIG_SET_STRING, "lowerdir+", "/lower1", 0);
     fsconfig(fd_overlay, FSCONFIG_SET_STRING, "lowerdir+", "/lower2", 0);

The selftest contains an example for this.

Signed-off-by: Christian Brauner <brauner@kernel.org>
---
Changes in v3:
- Add documentation into overlayfs.rst.
- Rename new mount api parsing helper.
- Change cleanup scope in helper.
- Link to v2: https://lore.kernel.org/r/20241011-work-overlayfs-v2-0-1b43328c5a31@kernel.org

Changes in v2:
- Alias fd and path based mount options.
- Link to v1: https://lore.kernel.org/r/20241011-work-overlayfs-v1-0-e34243841279@kernel.org

---
Christian Brauner (5):
      fs: add helper to use mount option as path or fd
      ovl: specify layers via file descriptors
      Documentation,ovl: document new file descriptor based layers
      selftests: use shared header
      selftests: add overlayfs fd mounting selftests

 Documentation/filesystems/overlayfs.rst            |  17 +++
 fs/fs_parser.c                                     |  20 +++
 fs/overlayfs/params.c                              | 116 ++++++++++++----
 include/linux/fs_parser.h                          |   5 +-
 .../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     | 152 +++++++++++++++++++++
 .../selftests/filesystems/overlayfs/wrappers.h     |  47 +++++++
 9 files changed, 334 insertions(+), 53 deletions(-)
---
base-commit: 8cf0b93919e13d1e8d4466eb4080a4c4d9d66d7b
change-id: 20241011-work-overlayfs-dbcfa9223e87

Comments

Amir Goldstein Oct. 14, 2024, 2:16 p.m. UTC | #1
On Mon, Oct 14, 2024 at 11:41 AM Christian Brauner <brauner@kernel.org> wrote:
>
> 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 mentioned this.
> This enables user to specify both:
>
>      fsconfig(fd_overlay, FSCONFIG_SET_FD, "upperdir+", NULL, fd_upper);
>      fsconfig(fd_overlay, FSCONFIG_SET_FD, "workdir+",  NULL, fd_work);
>      fsconfig(fd_overlay, FSCONFIG_SET_FD, "lowerdir+", NULL, fd_lower1);
>      fsconfig(fd_overlay, FSCONFIG_SET_FD, "lowerdir+", NULL, fd_lower2);
>
> in addition to:
>
>      fsconfig(fd_overlay, FSCONFIG_SET_STRING, "upperdir+", "/upper",  0);
>      fsconfig(fd_overlay, FSCONFIG_SET_STRING, "workdir+",  "/work",   0);
>      fsconfig(fd_overlay, FSCONFIG_SET_STRING, "lowerdir+", "/lower1", 0);
>      fsconfig(fd_overlay, FSCONFIG_SET_STRING, "lowerdir+", "/lower2", 0);
>
> The selftest contains an example for this.
>
> Signed-off-by: Christian Brauner <brauner@kernel.org>

For the series:

Reviewed-by: Amir Goldstein <amir73il@gmail.com>

Let me know if you want me to pick those up through the ovl tree.
I don't expect any merge conflicts with other pending ovl patches.

Thanks,
Amir.

> ---
> Changes in v3:
> - Add documentation into overlayfs.rst.
> - Rename new mount api parsing helper.
> - Change cleanup scope in helper.
> - Link to v2: https://lore.kernel.org/r/20241011-work-overlayfs-v2-0-1b43328c5a31@kernel.org
>
> Changes in v2:
> - Alias fd and path based mount options.
> - Link to v1: https://lore.kernel.org/r/20241011-work-overlayfs-v1-0-e34243841279@kernel.org
>
> ---
> Christian Brauner (5):
>       fs: add helper to use mount option as path or fd
>       ovl: specify layers via file descriptors
>       Documentation,ovl: document new file descriptor based layers
>       selftests: use shared header
>       selftests: add overlayfs fd mounting selftests
>
>  Documentation/filesystems/overlayfs.rst            |  17 +++
>  fs/fs_parser.c                                     |  20 +++
>  fs/overlayfs/params.c                              | 116 ++++++++++++----
>  include/linux/fs_parser.h                          |   5 +-
>  .../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     | 152 +++++++++++++++++++++
>  .../selftests/filesystems/overlayfs/wrappers.h     |  47 +++++++
>  9 files changed, 334 insertions(+), 53 deletions(-)
> ---
> base-commit: 8cf0b93919e13d1e8d4466eb4080a4c4d9d66d7b
> change-id: 20241011-work-overlayfs-dbcfa9223e87
>