diff options
author | Christian Brauner <brauner@kernel.org> | 2024-11-29 14:38:02 +0100 |
---|---|---|
committer | Christian Brauner <brauner@kernel.org> | 2024-12-14 12:40:41 +0100 |
commit | 50166d57ea8c5042ecba0ee22532617d72ed085a (patch) | |
tree | e71d3f1a6d3945385eaadf19b9aa67579655fc7b /fs/fhandle.c | |
parent | f07c7cc4684a641032c6bd439d3b91ec336e8cb5 (diff) |
exportfs: add open method
This allows filesystems such as pidfs to provide their custom open.
Link: https://lore.kernel.org/r/20241129-work-pidfs-file_handle-v1-3-87d803a42495@kernel.org
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Christian Brauner <brauner@kernel.org>
Diffstat (limited to 'fs/fhandle.c')
-rw-r--r-- | fs/fhandle.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/fs/fhandle.c b/fs/fhandle.c index c00d88fb14e1..f0b818f08aaa 100644 --- a/fs/fhandle.c +++ b/fs/fhandle.c @@ -401,6 +401,7 @@ static long do_handle_open(int mountdirfd, struct file_handle __user *ufh, long retval = 0; struct path path __free(path_put) = {}; struct file *file; + const struct export_operations *eops; retval = handle_to_path(mountdirfd, ufh, &path, open_flag); if (retval) @@ -410,7 +411,11 @@ static long do_handle_open(int mountdirfd, struct file_handle __user *ufh, if (fd < 0) return fd; - file = file_open_root(&path, "", open_flag, 0); + eops = path.mnt->mnt_sb->s_export_op; + if (eops->open) + file = eops->open(&path, open_flag); + else + file = file_open_root(&path, "", open_flag, 0); if (IS_ERR(file)) return PTR_ERR(file); |