ABCDEFGHIJKLMNOPQRSTUVWXYZ

umount2

MOUNT(2)                   Linux Programmer's Manual                  MOUNT(2)



NAME
       mount, umount - mount and unmount filesystems.

SYNOPSIS
       #include <sys/mount.h>

       int  mount(const char *source, const char *target, const char *filesys-
       temtype, unsigned long mountflags, const void *data);

       int umount(const char *target);

       int umount2(const char *target, int flags);

DESCRIPTION
       mount attaches the filesystem specified by source  (which  is  often  a
       device name, but can also be a directory name or a dummy) to the direc-
       tory specified by target.

       umount and umount2 remove the attachment of  the  (topmost)  filesystem
       mounted on target.

       Only the super-user may mount and unmount filesystems.  Since Linux 2.4
       a single filesystem can be visible at multiple mount points, and multi-
       ple mounts can be stacked on the same mount point.

       Values  for  the  filesystemtype  argument  supported by the kernel are
       listed in /proc/filesystems (like  "minix",  "ext2",  "msdos",  "proc",
       "nfs",  "iso9660"  etc.).   Further types may become available when the
       appropriate modules are loaded.

       The mountflags argument may have the magic number  0xC0ED  (MS_MGC_VAL)
       in  the top 16 bits (this was required in kernel versions prior to 2.4,
       but is no longer required and ignored if specified), and various  mount
       flags   (as  defined  in  <linux/fs.h>  for  libc4  and  libc5  and  in
       <sys/mount.h> for glibc2) in the low order 16 bits:

       MS_BIND
              (Linux 2.4 onwards) Perform a bind mount, making  a  file  or  a
              directory subtree visible at another point within a file system.
              Bind mounts may cross file system boundaries and span  chroot(2)
              jails.   The  filesystemtype, mountflags, and data arguments are
              ignored.

       MS_MANDLOCK
              Permit mandatory locking on files in this file system.   (Manda-
              tory  locking  must  still  be  enabled  on a per-file basis, as
              described in fcntl(2).)

       MS_MOVE
              Move a subtree.  source specifies an existing  mount  point  and
              target  specifies  the  new location.  The move is atomic: at no
              point is the subtree unmounted.  The filesystemtype, mountflags,
              and data arguments are ignored.

       MS_NOATIME
              Do not update access times for (all types of) files on this file
              system.

       MS_NODEV
              Do not allow access to devices (special files) on this file sys-
              tem.

       MS_NODIRATIME
              Do  not update access times for directories on this file system.

       MS_NOEXEC
              Do not allow programs to be executed from this file system.

       MS_NOSUID
              Do not honour set-UID and set-GID bits when  executing  programs
              from this file system.

       MS_RDONLY
              Mount file system read-only.

       MS_REMOUNT
              Remount  an  existing  mount.   This is allows you to change the
              mountflags and data of  an  existing  mount  without  having  to
              unmount  and  remount the file system.  source and target should
              be the same  values  specified  in  the  initial  mount()  call;
              filesystemtype is ignored.

       MS_SYNCHRONOUS
              Make  writes  on  this  file  system  synchronous (as though the
              O_SYNC flag to open(2) was specified for all file opens to  this
              file system).

       From  Linux  2.4  onwards, the MS_NODEV, MS_NOEXEC, and MS_NOSUID flags
       are settable on a per-mount point basis.

       The data argument is interpreted by the different file systems.   Typi-
       cally it is a string of comma-separated options understood by this file
       system.  See mount(8) for details of the  options  available  for  each
       filesystem type.

       Linux  2.1.116  added  the umount2() system call, which, like umount(),
       unmounts  a  target,  but  allows  additional  flags  controlling   the
       behaviour of the operation:

       MNT_FORCE
              Force  unmount  even  if  busy.   (Since  2.1.116.  Only for NFS
              mounts.)

       MNT_DETACH
              Perform a lazy unmount: make the mount point unavailable for new
              accesses,  and actually perform the unmount when the mount point
              ceases to be busy. (Since 2.4.11.)

RETURN VALUE
       On success, zero is returned.  On error, -1 is returned, and  errno  is
       set appropriately.

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 kernel source code for details.


       EPERM  The user is not the super-user.

       ENODEV Filesystemtype not configured in the kernel.

       ENOTBLK
              Source is not a block device (and a device was required).

       EBUSY  Source is already mounted. Or, it cannot be remounted read-only,
              because it still holds files open for writing.  Or, it cannot be
              mounted  on  target  because  target  is  still  busy (it is the
              working directory of some  task,  the  mount  point  of  another
              device,  has  open  files, etc.).  Or, it could not be unmounted
              because it is busy.

       EINVAL Source had an invalid superblock.  Or, a remount was  attempted,
              while  source was not already mounted on target.  Or, a move was
              attempted, while source was not a mount point, or was '/'.   Or,
              an umount was attempted, while target was not a mount point.

       ENOTDIR
              The second argument, or a prefix of the first argument, is not a
              directory.

       EFAULT One of the pointer arguments points  outside  the  user  address
              space.

       ENOMEM The  kernel  could not allocate a free page to copy filenames or
              data into.

       ENAMETOOLONG
              A pathname was longer than MAXPATHLEN.

       ENOENT A pathname was empty or had a nonexistent component.

       ELOOP  Too many link encountered during  pathname  resolution.   Or,  a
              move was attempted, while target is a descendant of source.

       EACCES A component of a path was not searchable.
              Or, mounting a read-only filesystem was attempted without giving
              the MS_RDONLY flag.
              Or, the block device Source is located on a  filesystem  mounted
              with the MS_NODEV option.

       ENXIO  The major number of the block device source is out of range.

       EMFILE (In case no block device is required:) Table of dummy devices is
              full.

CONFORMING TO
       These functions are Linux-specific and should not be used  in  programs
       intended to be portable.

HISTORY
       The  original  umount  function  was called as umount(device) and would
       return ENOTBLK when called with something other than  a  block  device.
       In  Linux  0.98p4  a  call  umount(dir)  was added, in order to support
       anonymous devices.  In Linux 2.3.99-pre7 the  call  umount(device)  was
       removed,  leaving only umount(dir) (since now devices can be mounted in
       more than one place, so specifying the device does not suffice).

       The original MS_SYNC flag was renamed MS_SYNCHRONOUS in 1.1.69  when  a
       different MS_SYNC was added to <mman.h>.

       Before  Linux 2.4 an attempt to execute a set-UID or set-GID program on
       a filesystem mounted with MS_NOSUID would fail with EPERM.  Since Linux
       2.4  the  set-UID  and  set-GID  bits are just silently ignored in this
       case.

SEE ALSO
       mount(8), umount(8)



Linux 2.5                         2002-06-11                          MOUNT(2)