]> git.ipfire.org Git - thirdparty/man-pages.git/blobdiff - man2/mount.2
pldd.1, bpf.2, chdir.2, clone.2, fanotify_init.2, fanotify_mark.2, intro.2, ipc.2...
[thirdparty/man-pages.git] / man2 / mount.2
index 6e090d15fd787aaf1325365275c2113a2c6d944b..cf36ebc9ba5d3375243e9bcdc4a9b28324b6f963 100644 (file)
 .\" 2008-10-06, mtk: move umount*() material into separate umount.2 page.
 .\" 2008-10-06, mtk: Add discussion of namespaces.
 .\"
-.TH MOUNT 2 2016-12-12 "Linux" "Linux Programmer's Manual"
+.TH MOUNT 2 2019-08-02 "Linux" "Linux Programmer's Manual"
 .SH NAME
 mount \- mount filesystem
 .SH SYNOPSIS
 .nf
 .B "#include <sys/mount.h>"
-.sp
+.PP
 .BI "int mount(const char *" source ", const char *" target ,
 .BI "          const char *" filesystemtype ", unsigned long " mountflags ,
 .BI "          const void *" data );
@@ -132,6 +132,8 @@ Note that some operation types ignore some or all of these flags,
 as described later in this page.
 .\"
 .\" FIXME 2.6.25 Added MS_I_VERSION, which needs to be documented.
+.\" commit 7a224228ed79d587ece2304869000aad1b8e97dd
+.\" (This is a per-superblock flag)
 .\"
 .TP
 .BR MS_DIRSYNC " (since Linux 2.5.19)"
@@ -166,7 +168,7 @@ This mount option significantly reduces writes
 needed to update the inode's timestamps, especially mtime and atime.
 However, in the event of a system crash, the atime and mtime fields
 on disk might be out of date by up to 24 hours.
-.PP
+.IP
 Examples of workloads where this option could be of significant benefit
 include frequent random writes to preallocated files,
 as well as cases where the
@@ -190,7 +192,9 @@ Since Linux 4.5,
 .\" commit 95ace75414f312f9a7b93d873f386987b92a5301
 this mount option requires the
 .B CAP_SYS_ADMIN
-capability.
+capability and a kernel configured with the
+.B CONFIG_MANDATORY_FILE_LOCKING
+option.
 .TP
 .B MS_NOATIME
 Do not update access times for (all types of) files on this filesystem.
@@ -277,21 +281,46 @@ flag to
 .BR open (2)
 was specified for all file opens to this filesystem).
 .PP
-From Linux 2.4 onward, the
+From Linux 2.4 onward, some of the above flags are
+settable on a per-mount basis,
+while others apply to the superblock of the mounted filesystem,
+meaning that all mounts of the same filesystem share those flags.
+(Previously, all of the flags were per-superblock.)
+.PP
+The per-mount-point flags are as follows:
+.IP * 3
+Since Linux 2.4:
 .BR MS_NODEV ", " MS_NOEXEC ", and " MS_NOSUID
 flags are settable on a per-mount-point basis.
-From kernel 2.6.16 onward,
+.IP *
+Since Linux 2.6.16:
 .B MS_NOATIME
 and
-.B MS_NODIRATIME
-are also settable on a per-mount-point basis.
-The
-.B MS_RELATIME
-flag is also settable on a per-mount-point basis.
+.BR MS_NODIRATIME .
+.IP *
+Since Linux 2.6.20:
+.BR MS_RELATIME .
+.PP
+The following flags are per-superblock:
+.BR MS_DIRSYNC ,
+.BR MS_LAZYTIME ,
+.BR MS_MANDLOCK ,
+.BR MS_MS_SILENT ,
+and
+.BR MS_SYNCHRONOUS .
+.\" And MS_I_VERSION?
+The initial settings of these flags are determined on the first
+mount of the filesystem, and will be shared by all subsequent mounts
+of the same filesystem.
+Subsequently, the settings of the flags can be changed
+via a remount operation (see below).
+Such changes will be visible via all mount points associated
+with the filesystem.
+.PP
 Since Linux 2.6.16,
 .B MS_RDONLY
 can be set or cleared on a per-mount-point basis as well as on
-the underlying filesystem.
+the underlying filesystem superblock.
 The mounted filesystem will be writable only if neither the filesystem
 nor the mountpoint are flagged as read-only.
 .\"
@@ -323,15 +352,20 @@ and
 arguments should match the values used in the original
 .BR mount ()
 call, except for those parameters that are being deliberately changed.
-Another exception is that
-.B MS_BIND
-has a different meaning for remount, and it should be included only if
-explicitly desired.
 .PP
 The following
 .I mountflags
 can be changed:
 .BR MS_LAZYTIME ,
+.\" FIXME
+.\" MS_LAZYTIME seems to be available only on a few filesystems,
+.\" and on ext4, it seems (from experiment that this flag
+.\" can only be enabled (but not disabled) on a remount.
+.\" The following code in ext4_remount() (kernel 4.17) seems to
+.\" confirm this:
+.\"
+.\"        if (*flags & SB_LAZYTIME)
+.\"                sb->s_flags |= SB_LAZYTIME;
 .BR MS_MANDLOCK ,
 .BR MS_NOATIME ,
 .BR MS_NODEV ,
@@ -340,12 +374,26 @@ can be changed:
 .BR MS_NOSUID ,
 .BR MS_RELATIME ,
 .BR MS_RDONLY ,
+.BR MS_STRICTATIME
+(whose effect is to clear the
+.BR MS_NOATIME
+and
+.BR MS_RELATIME
+flags),
 and
 .BR MS_SYNCHRONOUS .
 Attempts to change the setting of the
-.\" See the definition of MS_RMT_MASK in include/uapi/linux/fs.h
+.\" See the definition of MS_RMT_MASK in include/uapi/linux/fs.h,
+.\" which excludes MS_DIRSYNC and MS_SILENT, although SB_DIRSYNC
+.\" and SB_SILENT are split out as per-superblock flags in do_mount()
+.\" (Linux 4.17 source code)
 .BR MS_DIRSYNC
-flag during a remount are silently ignored.
+and
+.BR MS_SILENT
+flags during a remount are silently ignored.
+Note that changes to per-superblock flags are visible via
+all mount points of the associated filesystem
+(because the per-superblock flags are shared by all mount points).
 .PP
 Since Linux 3.17,
 .\" commit ffbc6f0ead47fa5a1dc9642b0331cb75c20a640e
@@ -361,7 +409,9 @@ then the remount operation preserves the existing values of these flags
 (rather than defaulting to
 .BR MS_RELATIME ).
 .PP
-Since Linux 2.6.26, this flag can be used with
+Since Linux 2.6.26, the
+.B MS_REMOUNT
+flag can be used with
 .B MS_BIND
 to modify only the per-mount-point flags.
 .\" See https://lwn.net/Articles/281157/
@@ -371,7 +421,11 @@ Specifying
 .IR mountflags
 as:
 .PP
-    MS_REMOUNT | MS_BIND | MS_RDONLY
+.in +4n
+.EX
+MS_REMOUNT | MS_BIND | MS_RDONLY
+.EE
+.in
 .PP
 will make access through this mountpoint read-only, without affecting
 other mount points.
@@ -396,10 +450,11 @@ and
 .IR data
 arguments are ignored.
 .PP
-The remaining bits in the
+The remaining bits (other than
+.BR MS_REC ,
+described below) in the
 .I mountflags
-argument are also ignored, with the exception of
-.BR MS_REC .
+argument are also ignored.
 (The bind mount has the same mount options as
 the underlying mount point.)
 However, see the discussion of remounting above,
@@ -432,10 +487,12 @@ or
 then the propagation type of an existing mount is changed.
 If more than one of these flags is specified, an error results.
 .PP
-The only flags that can be used with changing the propagation type are
+The only other flags that can be specified while changing
+the propagation type are
 .BR MS_REC
-and
-.BR MS_SILENT .
+(described below) and
+.BR MS_SILENT
+(which is ignored).
 .PP
 The
 .IR source ,
@@ -465,12 +522,12 @@ that contains other members, convert it to a slave mount.
 If this is a shared mount point that is a member of a peer group
 that contains no other members, convert it to a private mount.
 Otherwise, the propagation type of the mount point is left unchanged.
-.PP
+.IP
 When a mount point is a slave,
 mount and unmount events propagate into this mount point from
 the (master) shared peer group of which it was formerly a member.
 Mount and unmount events under this mount point do not propagate to any peer.
-.PP
+.IP
 A mount point can be the slave of another peer group
 while at the same time sharing mount and unmount events
 with a peer group of which it is a member.
@@ -486,7 +543,7 @@ with the
 and
 .BR MS_REC
 flags) is performed on a directory subtree,
-any bind mounts within the subtree are automatically pruned
+any unbindable mounts within the subtree are automatically pruned
 (i.e., not replicated)
 when replicating that subtree to produce the target subtree.
 .PP
@@ -575,6 +632,19 @@ A component of a path was not searchable.
 Mounting a read-only filesystem was attempted without giving the
 .B MS_RDONLY
 flag.
+.IP
+The file system may be read-only for various reasons, including:
+it resides on a read-only optical disk;
+it is resides on a device with a physical switch that has been set to
+mark the device read-only;
+the filesystem implementation was compiled with read-only support;
+or errors were detected when initially mounting the filesystem,
+so that it was marked read-only
+and can't be remounted as read-write (until the errors are fixed).
+.IP
+Some filesystems instead return the error
+.BR EROFS
+on an attempt to mount a read-only filesystem.
 .TP
 .B EACCES
 The block device
@@ -586,23 +656,18 @@ option.
 .\" the error EPERM if not present; CAP_DAC_OVERRIDE is required.
 .TP
 .B EBUSY
+An attempt was made to stack a new mount directly on
+top of an existing mount point that was created in this
+mount namespace with the same
 .I source
-is already mounted.
+and
+.IR target .
 .TP
 .B EBUSY
 .I source
 cannot be remounted read-only,
 because it still holds files open for writing.
 .TP
-.B EBUSY
-.I source
-cannot be mounted on
-.I target
-because
-.I target
-is still busy (it is the working directory of some thread,
-the mount point of another device, has open files, etc.).
-.TP
 .B EFAULT
 One of the pointer arguments points outside the user address space.
 .TP
@@ -621,6 +686,24 @@ was not already mounted on
 .B EINVAL
 A move operation
 .RB ( MS_MOVE )
+was attempted, but the mount tree under
+.I source
+includes unbindable mounts and
+.I target
+is a mount point that has propagation type
+.BR MS_SHARED .
+.TP
+.B EINVAL
+A move operation
+.RB ( MS_MOVE )
+was attempted, but the parent mount of
+.I source
+mount has propagation type
+.BR MS_SHARED .
+.TP
+.B EINVAL
+A move operation
+.RB ( MS_MOVE )
 was attempted, but
 .I source
 was not a mount point, or was \(aq/\(aq.
@@ -650,6 +733,17 @@ or
 .BR EINVAL
 An attempt was made to bind mount an unbindable mount.
 .TP
+.BR EINVAL
+In an unprivileged mount namespace
+(i.e., a mount namespace owned by a user namespace
+that was created by an unprivileged user),
+a bind mount operation
+.RB ( MS_BIND )
+was attempted without specifying
+.RB ( MS_REC ),
+which would have revealed the filesystem tree underneath one of
+the submounts of the directory being bound.
+.TP
 .B ELOOP
 Too many links encountered during pathname resolution.
 .TP
@@ -694,6 +788,14 @@ is out of range.
 .TP
 .B EPERM
 The caller does not have the required privileges.
+.TP
+.B EROFS
+Mounting a read-only filesystem was attempted without giving the
+.B MS_RDONLY
+flag.
+See
+.BR EACCES ,
+above.
 .SH VERSIONS
 The definitions of
 .BR MS_DIRSYNC ,
@@ -703,7 +805,7 @@ The definitions of
 .BR MS_RELATIME ,
 .BR MS_SHARED ,
 .BR MS_SLAVE ,
-.BR MS_STRICTATIME
+.BR MS_STRICTATIME ,
 and
 .BR MS_UNBINDABLE
 were added to glibc headers in version 2.12.
@@ -737,7 +839,7 @@ in 1.1.69
 when a different
 .B MS_SYNC
 was added to \fI<mman.h>\fP.
-.LP
+.PP
 Before Linux 2.4 an attempt to execute a set-user-ID or set-group-ID program
 on a filesystem mounted with
 .B MS_NOSUID
@@ -788,11 +890,22 @@ subsequently creates) and vice versa.
 The Linux-specific
 .I /proc/[pid]/mounts
 file exposes the list of mount points in the mount
-namespace of the process with the specified ID; see
+namespace of the process with the specified ID.
+The
+.I /proc/[pid]/mountinfo
+file exposes even more information about mount points,
+including the propagation type and mount ID information that makes it
+possible to discover the parental relationship between mount points.
+See
 .BR proc (5)
-for details.
+and
+.BR mount_namespaces (7)
+for details of these files.
 .SH SEE ALSO
 .BR mountpoint (1),
+.BR chroot (2),
+.BR ioctl_iflags (2),
+.BR pivot_root (2),
 .BR umount (2),
 .BR mount_namespaces (7),
 .BR path_resolution (7),