mount, umount - mount and unmount filesystems.
int mount(const char *specialfile, const char * dir , const char *
filesystemtype, unsigned long mountflags , const void * data);
int umount(const char *dir);
mount attaches the filesystem specified by specialfile (which is often
a device name) to the directory specified by dir.
umount removes the attachment of the (topmost) filesystem mounted on
Only the super-user may mount and unmount filesystems.
The filesystemtype argument may take one of the values listed in
/proc/filesystems (like "minix", "ext2", "msdos", "proc", "nfs",
The mountflags argument may have the magic number 0xC0ED in the top 16
bits, 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:
#define MS_RDONLY 1 /* mount read-only */
#define MS_NOSUID 2 /* ignore suid and sgid bits */
#define MS_NODEV 4 /* no access to device special files */
#define MS_NOEXEC 8 /* no program execution */
#define MS_SYNCHRONOUS 16 /* writes are synced at once */
#define MS_REMOUNT 32 /* alter flags of a mounted fs */
#define MS_MANDLOCK 64 /* allow mandatory locks */
#define MS_NOATIME 1024 /* do not update access times */
#define MS_NODIRATIME 2048 /* do not update dir access times */
#define MS_BIND 4096 /* bind subtree elsewhere */
The data argument is interpreted by the different file systems.
On success, zero is returned. On error, -1 is returned, and errno is
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 [Toc] [Back]
Specialfile is not a block device (if a device was required).
EBUSY Specialfile is already mounted. Or, it cannot be remounted readonly,
because it still holds files open for writing. Or, it
cannot be mounted on dir because dir is still busy (it is the
working directory of some task, the mount point of another
device, has open files, etc.).
EINVAL Specialfile had an invalid superblock. Or, a remount was
attempted, while specialfile was not already mounted on dir.
Or, an umount was attempted, while dir was not a mount point.
EFAULT One of the pointer arguments points outside the user address
ENOMEM The kernel could not allocate a free page to copy filenames or
ENAMETOOLONG [Toc] [Back]
A pathname was longer than MAXPATHLEN.
ENOENT A pathname was empty or had a nonexistent component.
ENOTDIR [Toc] [Back]
The second argument, or a prefix of the first argument, is not a
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 Specialfile is located on a filesystem
mounted with the MS_NODEV option.
ENXIO The major number of the block device specialfile is out of
EMFILE (In case no block device is required:) Table of dummy devices is
These functions are Linux-specific and should not be used in programs
intended to be portable.
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>.
Linux 1.1.67 1994-11-28 MOUNT(2)
[ Back ]