.\" 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 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
.\"
.\" 2008-10-06, mtk: Created this as a new page by splitting
.\"     umount/umount2 material out of mount.2
.\"
.TH UMOUNT 2 2017-09-15 "Linux" "Linux Programmer's Manual"
.SH NAME
umount, umount2 \- unmount filesystem
.SH SYNOPSIS
.nf
.B "#include <sys/mount.h>"
.PP
.BI "int umount(const char *" target );
.PP
.BI "int umount2(const char *" target ", int " flags );
.fi
.SH DESCRIPTION
.BR umount ()
and
.BR umount2 ()
remove the attachment of the (topmost) filesystem mounted on
.IR target .
.\" Note: the kernel naming differs from the glibc naming
.\" umount2 is the glibc name for what the kernel now calls umount
.\" and umount is the glibc name for oldumount
.PP
Appropriate privilege (Linux: the
.B CAP_SYS_ADMIN
capability) is required to unmount filesystems.
.PP
Linux 2.1.116 added the
.BR umount2 ()
system call, which, like
.BR umount (),
unmounts a target, but allows additional
.I flags
controlling the behavior of the operation:
.TP
.BR MNT_FORCE " (since Linux 2.1.116)"
Ask the filesystem to abort pending requests before attempting the
unmount.
This may allow the unmount to complete without waiting
for an inaccessible server, but could cause data loss.
If, after aborting requests,
some processes still have active references to the filesystem,
the unmount will still fail.
As at Linux 4.12,
.BR MNT_FORCE
is supported only on the following filesystems:
9p (since Linux 2.6.16),
ceph (since Linux 2.6.34),
cifs (since Linux 2.6.12),
fuse (since Linux 2.6.16),
lustre (since Linux 3.11),
and NFS (since Linux 2.1.116).
.TP
.BR MNT_DETACH " (since Linux 2.4.11)"
Perform a lazy unmount: make the mount point unavailable for new
accesses, immediately disconnect the filesystem and all filesystems
mounted below it from each other and from the mount table, and
actually perform the unmount when the mount point ceases to be busy.
.TP
.BR MNT_EXPIRE " (since Linux 2.6.8)"
Mark the mount point as expired.
If a mount point is not currently in use, then an initial call to
.BR umount2 ()
with this flag fails with the error
.BR EAGAIN ,
but marks the mount point as expired.
The mount point remains expired as long as it isn't accessed
by any process.
A second
.BR umount2 ()
call specifying
.B MNT_EXPIRE
unmounts an expired mount point.
This flag cannot be specified with either
.B MNT_FORCE
or
.BR MNT_DETACH .
.TP
.BR UMOUNT_NOFOLLOW " (since Linux 2.6.34)"
.\" Later added to 2.6.33-stable
Don't dereference
.I target
if it is a symbolic link.
This flag allows security problems to be avoided in set-user-ID-\fIroot\fP
programs that allow unprivileged users to unmount filesystems.
.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 EAGAIN
A call to
.BR umount2 ()
specifying
.B MNT_EXPIRE
successfully marked an unbusy filesystem as expired.
.TP
.B EBUSY
.I target
could not be unmounted because it is busy.
.TP
.B EFAULT
.I target
points outside the user address space.
.TP
.B EINVAL
.I target
is not a mount point.
.TP
.B EINVAL
.BR umount2 ()
was called with
.B MNT_EXPIRE
and either
.B MNT_DETACH
or
.BR MNT_FORCE .
.TP
.BR EINVAL " (since Linux 2.6.34)"
.BR umount2 ()
was called with an invalid flag value in
.IR flags .
.TP
.B ENAMETOOLONG
A pathname was longer than
.BR MAXPATHLEN .
.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 EPERM
The caller does not have the required privileges.
.SH VERSIONS
.BR MNT_DETACH
and
.BR MNT_EXPIRE
.\" http://sourceware.org/bugzilla/show_bug.cgi?id=10092
are available in glibc since version 2.11.
.SH CONFORMING TO
These functions are Linux-specific and should not be used in
programs intended to be portable.
.SH NOTES
.SS umount() and shared mount points
Shared mount points cause any mount activity on a mount point, including
.BR umount ()
operations, to be forwarded to every shared mount point in the
peer group and every slave mount of that peer group.
This means that
.BR umount ()
of any peer in a set of shared mounts will cause all of its
peers to be unmounted and all of their slaves to be unmounted as well.
.PP
This propagation of unmount activity can be particularly surprising
on systems where every mount point is shared by default.
On such systems,
recursively bind mounting the root directory of the filesystem
onto a subdirectory and then later unmounting that subdirectory with
.BR MNT_DETACH
will cause every mount in the mount namespace to be lazily unmounted.
.PP
To ensure
.BR umount ()
does not propagate in this fashion,
the mount point may be remounted using a
.BR mount ()
call with a
.I mount_flags
argument that includes both
.BR MS_REC
and
.BR MS_PRIVATE
prior to
.BR umount ()
being called.
.SS Historical details
The original
.BR umount ()
function was called as \fIumount(device)\fP and would return
.B ENOTBLK
when called with something other than a block device.
In Linux 0.98p4, a call \fIumount(dir)\fP was added, in order to
support anonymous devices.
In Linux 2.3.99-pre7, the call \fIumount(device)\fP was removed,
leaving only \fIumount(dir)\fP (since now devices can be mounted
in more than one place, so specifying the device does not suffice).
.SH SEE ALSO
.BR mount (2),
.BR mount_namespaces (7),
.BR path_resolution (7),
.BR mount (8),
.BR umount (8)
