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@xxxxxxxxxx> --- Changes in v2: - Alias fd and path based mount options. - Link to v1: https://lore.kernel.org/r/20241011-work-overlayfs-v1-0-e34243841279@xxxxxxxxxx --- Christian Brauner (4): fs: add helper to use mount option as path or fd ovl: specify layers via file descriptors selftests: use shared header selftests: add overlayfs fd mounting selftests fs/fs_parser.c | 19 ++++ fs/overlayfs/params.c | 106 +++++++++++++----- 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 | 122 +++++++++++++++++++++ .../selftests/filesystems/overlayfs/wrappers.h | 47 ++++++++ 8 files changed, 274 insertions(+), 55 deletions(-) --- base-commit: 8cf0b93919e13d1e8d4466eb4080a4c4d9d66d7b change-id: 20241011-work-overlayfs-dbcfa9223e87