On Tue, Jun 24, 2025 at 10:29 AM Christian Brauner <brauner@xxxxxxxxxx> wrote: > > Various filesystems such as pidfs and drm support opening file handles > without having to require a file descriptor to identify the filesystem. > The filesystem are global single instances and can be trivially > identified solely on the information encoded in the file handle. > > This makes it possible to not have to keep or acquire a sentinal file > descriptor just to pass it to open_by_handle_at() to identify the > filesystem. That's especially useful when such sentinel file descriptor > cannot or should not be acquired. > > For pidfs this means a file handle can function as full replacement for > storing a pid in a file. Instead a file handle can be stored and > reopened purely based on the file handle. > > Such autonomous file handles can be opened with or without specifying a > a file descriptor. If no proper file descriptor is used the FD_INVALID > sentinel must be passed. This allows us to define further special > negative fd sentinels in the future. > > Userspace can trivially test for support by trying to open the file > handle with an invalid file descriptor. > > Signed-off-by: Christian Brauner <brauner@xxxxxxxxxx> > --- > Changes in v2: > - Simplify the FILEID_PIDFS enum. > - Introduce FD_INVALID. > - Require FD_INVALID for autonomous file handles. > - Link to v1: https://lore.kernel.org/20250623-work-pidfs-fhandle-v1-0-75899d67555f@xxxxxxxxxx > After fixing the minor nits, feel free to add for the series Reviewed-by: Amir Goldstein <amir73il@xxxxxxxxx> > --- > Christian Brauner (11): > fhandle: raise FILEID_IS_DIR in handle_type > fhandle: hoist copy_from_user() above get_path_from_fd() > fhandle: rename to get_path_anchor() > pidfs: add pidfs_root_path() helper > fhandle: reflow get_path_anchor() > uapi/fcntl: mark range as reserved > uapi/fcntl: add FD_INVALID > exportfs: add FILEID_PIDFS > fhandle: add EXPORT_OP_AUTONOMOUS_HANDLES marker > fhandle, pidfs: support open_by_handle_at() purely based on file handle > selftests/pidfd: decode pidfd file handles withou having to specify an fd > > fs/fhandle.c | 82 ++++++++++++++-------- > fs/internal.h | 1 + > fs/pidfs.c | 16 ++++- > include/linux/exportfs.h | 9 ++- > include/uapi/linux/fcntl.h | 17 +++++ > include/uapi/linux/pidfd.h | 15 ---- > tools/testing/selftests/pidfd/Makefile | 2 +- > tools/testing/selftests/pidfd/pidfd.h | 6 +- > .../selftests/pidfd/pidfd_file_handle_test.c | 60 ++++++++++++++++ > 9 files changed, 158 insertions(+), 50 deletions(-) > --- > base-commit: 4e3d1e6e1b2d9df9650be14380c534b3c5081ddd > change-id: 20250619-work-pidfs-fhandle-b63ff35c4924 >