.\" 2008-10-06, mtk: move umount*() material into separate umount.2 page.
.\" 2008-10-06, mtk: Add discussion of namespaces.
.\"
-.TH MOUNT 2 2018-02-02 "Linux" "Linux Programmer's Manual"
+.TH MOUNT 2 2019-08-02 "Linux" "Linux Programmer's Manual"
.SH NAME
mount \- mount filesystem
.SH SYNOPSIS
.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.
.\"
.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,
-.\" which excludes MS_DIRSYNC, although SB_DIRSYNC is split out as a
-.\" a per-superblock flag in do_mount() (Linux 4.17 source code)
+.\" 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
.BR MS_RELATIME ).
.PP
Since Linux 2.6.26, the
-.B MS_RMOUNT
+.B MS_REMOUNT
flag can be used with
.B MS_BIND
to modify only the per-mount-point flags.
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 ,
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
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
.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.
.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 ,
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),