• David Howells's avatar
    vfs: syscall: Add fsmount() to create a mount for a superblock · 93766fbd
    David Howells authored
    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: default avatarDavid Howells <dhowells@redhat.com>
    cc: linux-api@vger.kernel.org
    Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
    93766fbd
namespace.c 96.1 KB