mirror of https://github.com/mkerrisk/man-pages
791 lines
21 KiB
Groff
791 lines
21 KiB
Groff
.\" Copyright (C) 1993 Rickard E. Faith <faith@cs.unc.edu>
|
|
.\" and Copyright (C) 1994 Andries E. Brouwer <aeb@cwi.nl>
|
|
.\" and Copyright (C) 2002, 2005, 2016 Michael Kerrisk <mtk.manpages@gmail.com>
|
|
.\"
|
|
.\" %%%LICENSE_START(VERBATIM)
|
|
.\" Permission is granted to make and distribute verbatim copies of this
|
|
.\" manual provided the copyright notice and this permission notice are
|
|
.\" preserved on all copies.
|
|
.\"
|
|
.\" Permission is granted to copy and distribute modified versions of this
|
|
.\" manual under the conditions for verbatim copying, provided that the
|
|
.\" entire resulting derived work is distributed under the terms of a
|
|
.\" permission notice identical to this one.
|
|
.\"
|
|
.\" Since the Linux kernel and libraries are constantly changing, this
|
|
.\" manual page may be incorrect or out-of-date. The author(s) assume no
|
|
.\" responsibility for errors or omissions, or for damages resulting from
|
|
.\" the use of the information contained herein. The author(s) may not
|
|
.\" have taken the same level of care in the production of this manual,
|
|
.\" which is licensed free of charge, as they might when working
|
|
.\" professionally.
|
|
.\"
|
|
.\" Formatted or processed versions of this manual, if unaccompanied by
|
|
.\" the source, must acknowledge the copyright and authors of this work.
|
|
.\" %%%LICENSE_END
|
|
.\"
|
|
.\" Modified 1996-11-04 by Eric S. Raymond <esr@thyrsus.com>
|
|
.\" Modified 2001-10-13 by Michael Kerrisk <mtk.manpages@gmail.com>
|
|
.\" Added note on historical behavior of MS_NOSUID
|
|
.\" Modified 2002-05-16 by Michael Kerrisk <mtk.manpages@gmail.com>
|
|
.\" Extensive changes and additions
|
|
.\" Modified 2002-05-27 by aeb
|
|
.\" Modified 2002-06-11 by Michael Kerrisk <mtk.manpages@gmail.com>
|
|
.\" Enhanced descriptions of MS_MOVE, MS_BIND, and MS_REMOUNT
|
|
.\" Modified 2004-06-17 by Michael Kerrisk <mtk.manpages@gmail.com>
|
|
.\" 2005-05-18, mtk, Added MNT_EXPIRE, plus a few other tidy-ups.
|
|
.\" 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"
|
|
.SH NAME
|
|
mount \- mount filesystem
|
|
.SH SYNOPSIS
|
|
.nf
|
|
.B "#include <sys/mount.h>"
|
|
.sp
|
|
.BI "int mount(const char *" source ", const char *" target ,
|
|
.BI " const char *" filesystemtype ", unsigned long " mountflags ,
|
|
.BI " const void *" data );
|
|
.fi
|
|
.SH DESCRIPTION
|
|
.BR mount ()
|
|
attaches the filesystem specified by
|
|
.I source
|
|
(which is often a pathname referring to a device,
|
|
but can also be the pathname of a directory or file,
|
|
or a dummy string) to the location (a directory or file)
|
|
specified by the pathname in
|
|
.IR target .
|
|
|
|
Appropriate privilege (Linux: the
|
|
.B CAP_SYS_ADMIN
|
|
capability) is required to mount filesystems.
|
|
|
|
Values for the
|
|
.I filesystemtype
|
|
argument supported by the kernel are listed in
|
|
.I /proc/filesystems
|
|
(e.g., "btrfs", "ext4", "jfs", "xfs", "vfat", "fuse",
|
|
"tmpfs", "cgroup", "proc", "mqueue", "nfs", "cifs", "iso9660").
|
|
Further types may become available when the appropriate modules
|
|
are loaded.
|
|
|
|
The
|
|
.I data
|
|
argument is interpreted by the different filesystems.
|
|
Typically it is a string of comma-separated options
|
|
understood by this filesystem.
|
|
See
|
|
.BR mount (8)
|
|
for details of the options available for each filesystem type.
|
|
|
|
A call to
|
|
.BR mount ()
|
|
performs one of a number of general types of operation,
|
|
depending on the bits specified in
|
|
.IR mountflags .
|
|
The choice of which operation to perform is determined by
|
|
testing the bits set in
|
|
.IR mountflags ,
|
|
with the tests being conducted in the order listed here:
|
|
.IP * 3
|
|
Remount an existing mount:
|
|
.IR mountflags
|
|
includes
|
|
.BR MS_REMOUNT .
|
|
.IP *
|
|
Create a bind mount:
|
|
.IR mountflags
|
|
includes
|
|
.BR MS_BIND .
|
|
.IP *
|
|
Change the propagation type of an existing mount:
|
|
.IR mountflags
|
|
includes one of
|
|
.BR MS_SHARED ,
|
|
.BR MS_PRIVATE ,
|
|
.BR MS_SLAVE ,
|
|
or
|
|
.BR MS_UNBINDABLE .
|
|
.IP *
|
|
Move an existing mount to a new location:
|
|
.IR mountflags
|
|
includes
|
|
.BR MS_MOVE .
|
|
.IP *
|
|
Create a new mount:
|
|
.IR mountflags
|
|
includes none of the above flags.
|
|
.PP
|
|
Each of these operations is detailed later in this page.
|
|
Further flags may be specified in
|
|
.IR mountflags
|
|
to modify the behavior of
|
|
.BR mount (),
|
|
as described below.
|
|
.\"
|
|
.SS Additional mount flags
|
|
The list below describes the additional flags that can be specified in
|
|
.IR mountflags .
|
|
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.
|
|
.\"
|
|
.TP
|
|
.BR MS_DIRSYNC " (since Linux 2.5.19)"
|
|
Make directory changes on this filesystem synchronous.
|
|
(This property can be obtained for individual directories
|
|
or subtrees using
|
|
.BR chattr (1).)
|
|
.TP
|
|
.BR MS_LAZYTIME " (since Linux 4.0)"
|
|
.\" commit 0ae45f63d4ef8d8eeec49c7d8b44a1775fff13e8
|
|
.\" commit fe032c422c5ba562ba9c2d316f55e258e03259c6
|
|
.\" commit a26f49926da938f47561f386be56a83dd37a496d
|
|
Reduce on-disk updates of inode timestamps (atime, mtime, ctime)
|
|
by maintaining these changes only in memory.
|
|
The on-disk timestamps are updated only when:
|
|
.RS
|
|
.IP (a) 5
|
|
the inode needs to be updated for some change unrelated to file timestamps;
|
|
.IP (b)
|
|
the application employs
|
|
.BR fsync (2),
|
|
.BR syncfs (2),
|
|
or
|
|
.BR sync (2);
|
|
.IP (c)
|
|
an undeleted inode is evicted from memory; or
|
|
.IP (d)
|
|
more than 24 hours have passed since the inode was written to disk.
|
|
.RE
|
|
.IP
|
|
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.
|
|
|
|
Examples of workloads where this option could be of significant benefit
|
|
include frequent random writes to preallocated files,
|
|
as well as cases where the
|
|
.B MS_STRICTATIME
|
|
mount option is also enabled.
|
|
(The advantage of combining
|
|
.BR MS_STRICTATIME
|
|
and
|
|
.BR MS_LAZYTIME
|
|
is that
|
|
.BR stat (2)
|
|
will return the correctly updated atime, but the atime updates
|
|
will be flushed to disk only in the cases listed above.)
|
|
.TP
|
|
.B MS_MANDLOCK
|
|
Permit mandatory locking on files in this filesystem.
|
|
(Mandatory locking must still be enabled on a per-file basis,
|
|
as described in
|
|
.BR fcntl (2).)
|
|
Since Linux 4.5,
|
|
.\" commit 95ace75414f312f9a7b93d873f386987b92a5301
|
|
this mount option requires the
|
|
.B CAP_SYS_ADMIN
|
|
capability.
|
|
.TP
|
|
.B MS_NOATIME
|
|
Do not update access times for (all types of) files on this filesystem.
|
|
.TP
|
|
.B MS_NODEV
|
|
Do not allow access to devices (special files) on this filesystem.
|
|
.TP
|
|
.B MS_NODIRATIME
|
|
Do not update access times for directories on this filesystem.
|
|
This flag provides a subset of the functionality provided by
|
|
.BR MS_NOATIME ;
|
|
that is,
|
|
.BR MS_NOATIME
|
|
implies
|
|
.BR MS_NODIRATIME .
|
|
.TP
|
|
.B MS_NOEXEC
|
|
Do not allow programs to be executed from this filesystem.
|
|
.\" (Possibly useful for a filesystem that contains non-Linux executables.
|
|
.\" Often used as a security feature, e.g., to make sure that restricted
|
|
.\" users cannot execute files uploaded using ftp or so.)
|
|
.TP
|
|
.B MS_NOSUID
|
|
Do not honor set-user-ID and set-group-ID bits or file capabilities
|
|
when executing programs from this filesystem.
|
|
.\" (This is a security feature to prevent users executing set-user-ID and
|
|
.\" set-group-ID programs from removable disk devices.)
|
|
.TP
|
|
.B MS_RDONLY
|
|
Mount filesystem read-only.
|
|
.TP
|
|
.BR MS_REC " (since Linux 2.4.11)"
|
|
Used in conjunction with
|
|
.BR MS_BIND
|
|
to create a recursive bind mount,
|
|
and in conjunction with the propagation type flags to recursively change
|
|
the propagation type of all of the mounts in a subtree.
|
|
See below for further details.
|
|
.TP
|
|
.BR MS_RELATIME " (since Linux 2.6.20)"
|
|
When a file on this filesystem is accessed,
|
|
update the file's last access time (atime) only if the current value
|
|
of atime is less than or equal to the file's last modification time (mtime)
|
|
or last status change time (ctime).
|
|
This option is useful for programs, such as
|
|
.BR mutt (1),
|
|
that need to know when a file has been read since it was last modified.
|
|
Since Linux 2.6.30, the kernel defaults to the behavior provided
|
|
by this flag (unless
|
|
.BR MS_NOATIME
|
|
was specified), and the
|
|
.B MS_STRICTATIME
|
|
flag is required to obtain traditional semantics.
|
|
In addition, since Linux 2.6.30,
|
|
the file's last access time is always updated if it
|
|
is more than 1 day old.
|
|
.\" Matthew Garrett notes in the patch that added this behavior
|
|
.\" that this lets utilities such as tmpreaper (which deletes
|
|
.\" files based on last access time) work correctly.
|
|
.TP
|
|
.BR MS_SILENT " (since Linux 2.6.17)"
|
|
Suppress the display of certain
|
|
.RI ( printk ())
|
|
warning messages in the kernel log.
|
|
This flag supersedes the misnamed and obsolete
|
|
.BR MS_VERBOSE
|
|
flag (available since Linux 2.4.12), which has the same meaning.
|
|
.TP
|
|
.BR MS_STRICTATIME " (since Linux 2.6.30)"
|
|
Always update the last access time (atime) when files on this
|
|
filesystem are accessed.
|
|
(This was the default behavior before Linux 2.6.30.)
|
|
Specifying this flag overrides the effect of setting the
|
|
.BR MS_NOATIME
|
|
and
|
|
.BR MS_RELATIME
|
|
flags.
|
|
.TP
|
|
.B MS_SYNCHRONOUS
|
|
Make writes on this filesystem synchronous (as though
|
|
the
|
|
.B O_SYNC
|
|
flag to
|
|
.BR open (2)
|
|
was specified for all file opens to this filesystem).
|
|
.PP
|
|
From Linux 2.4 onward, the
|
|
.BR MS_NODEV ", " MS_NOEXEC ", and " MS_NOSUID
|
|
flags are settable on a per-mount-point basis.
|
|
From kernel 2.6.16 onward,
|
|
.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.
|
|
.\"
|
|
.SS Remounting an existing mount
|
|
An existing mount may be remounted by specifying
|
|
.B MS_REMOUNT
|
|
in
|
|
.IR mountflags .
|
|
This allows you to change the
|
|
.I mountflags
|
|
and
|
|
.I data
|
|
of an existing mount without having to unmount and remount the filesystem.
|
|
.I target
|
|
should be the same value specified in the initial
|
|
.BR mount ()
|
|
call.
|
|
|
|
The
|
|
.I source
|
|
and
|
|
.I filesystemtype
|
|
arguments are ignored.
|
|
|
|
The
|
|
.I mountflags
|
|
and
|
|
.I data
|
|
arguments should match the values used in the original
|
|
.BR mount ()
|
|
call, except for those parameters that are being deliberately changed.
|
|
|
|
The following
|
|
.I mountflags
|
|
can be changed:
|
|
.BR MS_LAZYTIME ,
|
|
.BR MS_MANDLOCK ,
|
|
.BR MS_NOATIME ,
|
|
.BR MS_NODEV ,
|
|
.BR MS_NODIRATIME ,
|
|
.BR MS_NOEXEC ,
|
|
.BR MS_NOSUID ,
|
|
.BR MS_RELATIME ,
|
|
.BR MS_RDONLY ,
|
|
and
|
|
.BR MS_SYNCHRONOUS .
|
|
Attempts to change the setting of the
|
|
.\" See the definition of MS_RMT_MASK in include/uapi/linux/fs.h
|
|
.BR MS_DIRSYNC
|
|
flag during a remount are silently ignored.
|
|
|
|
Since Linux 3.17,
|
|
.\" commit ffbc6f0ead47fa5a1dc9642b0331cb75c20a640e
|
|
if none of
|
|
.BR MS_NOATIME ,
|
|
.BR MS_NODIRATIME ,
|
|
.BR MS_RELATIME ,
|
|
or
|
|
.BR MS_STRICTATIME
|
|
is specified in
|
|
.IR mountflags ,
|
|
then the remount operation preserves the existing values of these flags
|
|
(rather than defaulting to
|
|
.BR MS_RELATIME ).
|
|
|
|
Since Linux 2.6.26, this flag can also be used to make
|
|
.\" See https://lwn.net/Articles/281157/
|
|
an existing bind mount read-only by specifying
|
|
.IR mountflags
|
|
as:
|
|
|
|
MS_REMOUNT | MS_BIND | MS_RDONLY
|
|
|
|
Note that only the
|
|
.BR MS_RDONLY
|
|
setting of the bind mount can be changed in this manner.
|
|
.\"
|
|
.SS Creating a bind mount
|
|
If
|
|
.I mountflags
|
|
includes
|
|
.BR MS_BIND
|
|
(available since Linux 2.4),
|
|
.\" since 2.4.0-test9
|
|
then perform a bind mount.
|
|
A bind mount makes a file or a directory subtree visible at
|
|
another point within the single directory hierarchy.
|
|
Bind mounts may cross filesystem boundaries and span
|
|
.BR chroot (2)
|
|
jails.
|
|
|
|
The
|
|
.IR filesystemtype
|
|
and
|
|
.IR data
|
|
arguments are ignored.
|
|
|
|
The remaining bits in the
|
|
.I mountflags
|
|
argument are also ignored, with the exception of
|
|
.BR MS_REC .
|
|
(The bind mount has the same mount options as
|
|
the underlying mount point.)
|
|
However, see the discussion of remounting above,
|
|
for a method of making an existing bind mount read-only.
|
|
|
|
By default, when a directory is bind mounted,
|
|
only that directory is mounted;
|
|
if there are any submounts under the directory tree,
|
|
they are not bind mounted.
|
|
If the
|
|
.BR MS_REC
|
|
flag is also specified, then a recursive bind mount operation is performed:
|
|
all submounts under the
|
|
.I source
|
|
subtree (other than unbindable mounts)
|
|
are also bind mounted at the corresponding location in the
|
|
.I target
|
|
subtree.
|
|
.\"
|
|
.SS Changing the propagation type of an existing mount
|
|
If
|
|
.IR mountflags
|
|
includes one of
|
|
.BR MS_SHARED ,
|
|
.BR MS_PRIVATE ,
|
|
.BR MS_SLAVE ,
|
|
or
|
|
.BR MS_UNBINDABLE
|
|
(all available since Linux 2.6.15),
|
|
then the propagation type of an existing mount is changed.
|
|
If more than one of these flags is specified, an error results.
|
|
|
|
The only flags that can be used with changing the propagation type are
|
|
.BR MS_REC
|
|
and
|
|
.BR MS_SILENT .
|
|
|
|
The
|
|
.IR source ,
|
|
.IR filesystemtype ,
|
|
and
|
|
.IR data
|
|
arguments are ignored.
|
|
|
|
The meanings of the propagation type flags are as follows:
|
|
.TP
|
|
.BR MS_SHARED
|
|
Make this mount point shared.
|
|
Mount and unmount events immediately under this mount point will propagate
|
|
to the other mount points that are members of this mount's peer group.
|
|
Propagation here means that the same mount or unmount will automatically
|
|
occur under all of the other mount points in the peer group.
|
|
Conversely, mount and unmount events that take place under
|
|
peer mount points will propagate to this mount point.
|
|
.TP
|
|
.BR MS_PRIVATE
|
|
Make this mount point private.
|
|
Mount and unmount events do not propagate into or out of this mount point.
|
|
This is the default propagation type for newly created mount points.
|
|
.TP
|
|
.BR MS_SLAVE
|
|
If this is a shared mount point that is a member of a peer group
|
|
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.
|
|
|
|
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.
|
|
|
|
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.
|
|
.TP
|
|
.BR MS_UNBINDABLE
|
|
Make this mount unbindable.
|
|
This is like a private mount,
|
|
and in addition this mount can't be bind mounted.
|
|
When a recursive bind mount
|
|
.RB ( mount ()
|
|
with the
|
|
.BR MS_BIND
|
|
and
|
|
.BR MS_REC
|
|
flags) is performed on a directory subtree,
|
|
any bind mounts within the subtree are automatically pruned
|
|
(i.e., not replicated)
|
|
when replicating that subtree to produce the target subtree.
|
|
.PP
|
|
By default, changing the propagation type affects only the
|
|
.I target
|
|
mount point.
|
|
If the
|
|
.B MS_REC
|
|
flag is also specified in
|
|
.IR mountflags ,
|
|
then the propagation type of all mount points under
|
|
.IR target
|
|
is also changed.
|
|
|
|
For further details regarding mount propagation types, see
|
|
.BR mount_namespaces (7).
|
|
.\"
|
|
.SS Moving a mount
|
|
If
|
|
.I mountflags
|
|
contains the flag
|
|
.BR MS_MOVE
|
|
(available since Linux 2.4.18),
|
|
then move a subtree:
|
|
.I source
|
|
specifies an existing mount point and
|
|
.I target
|
|
specifies the new location to which that mount point is to be relocated.
|
|
The move is atomic: at no point is the subtree unmounted.
|
|
|
|
The remaining bits in the
|
|
.IR mountflags
|
|
argument are ignored, as are the
|
|
.IR filesystemtype
|
|
and
|
|
.IR data
|
|
arguments.
|
|
.\"
|
|
.SS Creating a new mount point
|
|
If none of
|
|
.BR MS_REMOUNT ,
|
|
.BR MS_BIND ,
|
|
.BR MS_MOVE ,
|
|
.BR MS_SHARED ,
|
|
.BR MS_PRIVATE ,
|
|
.BR MS_SLAVE ,
|
|
or
|
|
.BR MS_UNBINDABLE
|
|
is specified in
|
|
.IR mountflags ,
|
|
then
|
|
.BR mount ()
|
|
performs its default action: creating a new mount point.
|
|
.IR source
|
|
specifies the source for the new mount point, and
|
|
.IR target
|
|
specifies the directory at which to create the mount point.
|
|
|
|
The
|
|
.I filesystemtype
|
|
and
|
|
.I data
|
|
arguments are employed, and further bits may be specified in
|
|
.IR mountflags
|
|
to modify the behavior of the call.
|
|
.\"
|
|
.SH RETURN VALUE
|
|
On success, zero is returned.
|
|
On error, \-1 is returned, and
|
|
.I errno
|
|
is set appropriately.
|
|
.SH ERRORS
|
|
The error values given below result from filesystem type independent
|
|
errors.
|
|
Each filesystem type may have its own special errors and its
|
|
own special behavior.
|
|
See the Linux kernel source code for details.
|
|
.TP
|
|
.B EACCES
|
|
A component of a path was not searchable.
|
|
(See also
|
|
.BR path_resolution (7).)
|
|
.TP
|
|
.B EACCES
|
|
Mounting a read-only filesystem was attempted without giving the
|
|
.B MS_RDONLY
|
|
flag.
|
|
.TP
|
|
.B EACCES
|
|
The block device
|
|
.I source
|
|
is located on a filesystem mounted with the
|
|
.B MS_NODEV
|
|
option.
|
|
.\" mtk: Probably: write permission is required for MS_BIND, with
|
|
.\" the error EPERM if not present; CAP_DAC_OVERRIDE is required.
|
|
.TP
|
|
.B EBUSY
|
|
.I source
|
|
is already mounted.
|
|
.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
|
|
.B EINVAL
|
|
.I source
|
|
had an invalid superblock.
|
|
.TP
|
|
.B EINVAL
|
|
A remount operation
|
|
.RB ( MS_REMOUNT )
|
|
was attempted, but
|
|
.I source
|
|
was not already mounted on
|
|
.IR target .
|
|
.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 EINVAL
|
|
.I mountflags
|
|
includes more than one of
|
|
.BR MS_SHARED ,
|
|
.BR MS_PRIVATE ,
|
|
.BR MS_SLAVE ,
|
|
or
|
|
.BR MS_UNBINDABLE .
|
|
.TP
|
|
.B EINVAL
|
|
.I mountflags
|
|
includes
|
|
.BR MS_SHARED ,
|
|
.BR MS_PRIVATE ,
|
|
.BR MS_SLAVE ,
|
|
or
|
|
.BR MS_UNBINDABLE
|
|
and also includes a flag other than
|
|
.BR MS_REC
|
|
or
|
|
.BR MS_SILENT .
|
|
.TP
|
|
.BR EINVAL
|
|
An attempt was made to bind mount an unbindable mount.
|
|
.TP
|
|
.B ELOOP
|
|
Too many links encountered during pathname resolution.
|
|
.TP
|
|
.B ELOOP
|
|
A move operation was attempted, and
|
|
.I target
|
|
is a descendant of
|
|
.IR source .
|
|
.TP
|
|
.B EMFILE
|
|
(In case no block device is required:)
|
|
Table of dummy devices is full.
|
|
.TP
|
|
.B ENAMETOOLONG
|
|
A pathname was longer than
|
|
.BR MAXPATHLEN .
|
|
.TP
|
|
.B ENODEV
|
|
.I filesystemtype
|
|
not configured in the kernel.
|
|
.TP
|
|
.B ENOENT
|
|
A pathname was empty or had a nonexistent component.
|
|
.TP
|
|
.B ENOMEM
|
|
The kernel could not allocate a free page to copy filenames or data into.
|
|
.TP
|
|
.B ENOTBLK
|
|
.I source
|
|
is not a block device (and a device was required).
|
|
.TP
|
|
.B ENOTDIR
|
|
.IR target ,
|
|
or a prefix of
|
|
.IR source ,
|
|
is not a directory.
|
|
.TP
|
|
.B ENXIO
|
|
The major number of the block device
|
|
.I source
|
|
is out of range.
|
|
.TP
|
|
.B EPERM
|
|
The caller does not have the required privileges.
|
|
.SH VERSIONS
|
|
The definitions of
|
|
.BR MS_DIRSYNC ,
|
|
.BR MS_MOVE ,
|
|
.BR MS_PRIVATE ,
|
|
.BR MS_REC ,
|
|
.BR MS_RELATIME ,
|
|
.BR MS_SHARED ,
|
|
.BR MS_SLAVE ,
|
|
.BR MS_STRICTATIME
|
|
and
|
|
.BR MS_UNBINDABLE
|
|
were added to glibc headers in version 2.12.
|
|
.\"
|
|
.SH CONFORMING TO
|
|
This function is Linux-specific and should not be used in
|
|
programs intended to be portable.
|
|
.SH NOTES
|
|
Since Linux 2.4 a single filesystem can be mounted at
|
|
multiple mount points, and multiple mounts can be stacked
|
|
on the same mount point.
|
|
.\" Multiple mounts on same mount point: since 2.3.99pre7.
|
|
|
|
The
|
|
.I mountflags
|
|
argument may have the magic number 0xC0ED (\fBMS_MGC_VAL\fP)
|
|
in the top 16 bits.
|
|
(All of the other flags discussed in DESCRIPTION
|
|
occupy the low order 16 bits of
|
|
.IR mountflags .)
|
|
Specifying
|
|
.BR MS_MGC_VAL
|
|
was required in kernel versions prior to 2.4,
|
|
but since Linux 2.4 is no longer required and is ignored if specified.
|
|
|
|
The original
|
|
.B MS_SYNC
|
|
flag was renamed
|
|
.B MS_SYNCHRONOUS
|
|
in 1.1.69
|
|
when a different
|
|
.B MS_SYNC
|
|
was added to \fI<mman.h>\fP.
|
|
.LP
|
|
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
|
|
would fail with
|
|
.BR EPERM .
|
|
Since Linux 2.4 the set-user-ID and set-group-ID bits are
|
|
just silently ignored in this case.
|
|
.\" The change is in patch-2.4.0-prerelease.
|
|
.\"
|
|
|
|
.SS Per-process namespaces
|
|
Starting with kernel 2.4.19, Linux provides
|
|
per-process mount namespaces.
|
|
A mount namespace is the set of filesystem mounts that
|
|
are visible to a process.
|
|
Mount-point namespaces can be (and usually are)
|
|
shared between multiple processes,
|
|
and changes to the namespace (i.e., mounts and unmounts) by one process
|
|
are visible to all other processes sharing the same namespace.
|
|
(The pre-2.4.19 Linux situation can be considered as one in which
|
|
a single namespace was shared by every process on the system.)
|
|
|
|
A child process created by
|
|
.BR fork (2)
|
|
shares its parent's mount namespace;
|
|
the mount namespace is preserved across an
|
|
.BR execve (2).
|
|
|
|
A process can obtain a private mount namespace if:
|
|
it was created using the
|
|
.BR clone (2)
|
|
.BR CLONE_NEWNS
|
|
flag,
|
|
in which case its new namespace is initialized to be a
|
|
.I copy
|
|
of the namespace of the process that called
|
|
.BR clone (2);
|
|
or it calls
|
|
.BR unshare (2)
|
|
with the
|
|
.BR CLONE_NEWNS
|
|
flag,
|
|
which causes the caller's mount namespace to obtain a private copy
|
|
of the namespace that it was previously sharing with other processes,
|
|
so that future mounts and unmounts by the caller are invisible
|
|
to other processes (except child processes that the caller
|
|
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
|
|
.BR proc (5)
|
|
for details.
|
|
.SH SEE ALSO
|
|
.BR mountpoint (1),
|
|
.BR umount (2),
|
|
.BR mount_namespaces (7),
|
|
.BR path_resolution (7),
|
|
.BR findmnt (8),
|
|
.BR lsblk (8),
|
|
.BR mount (8),
|
|
.BR umount (8)
|