summaryrefslogtreecommitdiffstats
path: root/include/linux/syscalls.h
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2018-11-01 19:36:14 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2019-03-20 18:49:06 -0400
commit93766fbd2696c2c4453dd8e1070977e9cd4e6b6d (patch)
treea69eb54819cec4a45ce2ce7953c71faea6a6e79f /include/linux/syscalls.h
parentecdab150fddb42fe6a739335257949220033b782 (diff)
vfs: syscall: Add fsmount() to create a mount for a superblock
Provide a system call by which a filesystem opened with fsopen() and configured by a series of fsconfig() calls can have a detached mount object created for it. This mount object can then be attached to the VFS mount hierarchy using move_mount() by passing the returned file descriptor as the from directory fd. The system call looks like: int mfd = fsmount(int fsfd, unsigned int flags, unsigned int attr_flags); where fsfd is the file descriptor returned by fsopen(). flags can be 0 or FSMOUNT_CLOEXEC. attr_flags is a bitwise-OR of the following flags: MOUNT_ATTR_RDONLY Mount read-only MOUNT_ATTR_NOSUID Ignore suid and sgid bits MOUNT_ATTR_NODEV Disallow access to device special files MOUNT_ATTR_NOEXEC Disallow program execution MOUNT_ATTR__ATIME Setting on how atime should be updated MOUNT_ATTR_RELATIME - Update atime relative to mtime/ctime MOUNT_ATTR_NOATIME - Do not update access times MOUNT_ATTR_STRICTATIME - Always perform atime updates MOUNT_ATTR_NODIRATIME Do not update directory access times In the event that fsmount() fails, it may be possible to get an error message by calling read() on fsfd. If no message is available, ENODATA will be reported. Signed-off-by: David Howells <dhowells@redhat.com> cc: linux-api@vger.kernel.org Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'include/linux/syscalls.h')
-rw-r--r--include/linux/syscalls.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
index 925f9dfc356b..0e697f595278 100644
--- a/include/linux/syscalls.h
+++ b/include/linux/syscalls.h
@@ -992,6 +992,7 @@ asmlinkage long sys_move_mount(int from_dfd, const char __user *from_path,
992asmlinkage long sys_fsopen(const char __user *fs_name, unsigned int flags); 992asmlinkage long sys_fsopen(const char __user *fs_name, unsigned int flags);
993asmlinkage long sys_fsconfig(int fs_fd, unsigned int cmd, const char __user *key, 993asmlinkage long sys_fsconfig(int fs_fd, unsigned int cmd, const char __user *key,
994 const void __user *value, int aux); 994 const void __user *value, int aux);
995asmlinkage long sys_fsmount(int fs_fd, unsigned int flags, unsigned int ms_flags);
995asmlinkage long sys_pidfd_send_signal(int pidfd, int sig, 996asmlinkage long sys_pidfd_send_signal(int pidfd, int sig,
996 siginfo_t __user *info, 997 siginfo_t __user *info,
997 unsigned int flags); 998 unsigned int flags);