]> 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 57736a141451b237ffc2579d21768a13a3f129eb..cf36ebc9ba5d3375243e9bcdc4a9b28324b6f963 100644 (file)
@@ -37,7 +37,7 @@
 .\" 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
@@ -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)"
@@ -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
@@ -362,7 +410,7 @@ then the remount operation preserves the existing values of these flags
 .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.
@@ -402,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,
@@ -438,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 ,
@@ -492,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
@@ -581,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
@@ -622,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.
@@ -706,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 ,
@@ -715,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.
@@ -813,6 +903,9 @@ and
 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),