mount(2)
NAME
mount, nmount, unmount - mount or dismount a file system
LIBRARY
Standard C Library (libc, -lc)
SYNOPSIS
#include <sys/param.h> #include <sys/mount.h> int mount(const char *type, const char *dir, int flags, void *data); int unmount(const char *dir, int flags); #include <sys/uio.h> int nmount(struct iovec *iov, u_int niov, int flags);
DESCRIPTION
- The mount() system call grafts a file system object onto the
- system file
tree at the point dir. The argument data describes the file - system
object to be mounted. The argument type tells the kernel - how to interpret data (See type below). The contents of the file system
- become
available through the new mount point dir. Any files in dir - at the time
of a successful mount are swept under the carpet so to - speak, and are
unavailable until the file system is unmounted. - The nmount() system call behaves similarly to mount(), ex
- cept that the
mount options (file system type name, device to mount, - mount-point name,
etc.) are passed as an array of name-value pairs in the ar - ray iov, containing niov elements. The following options are required
- by all file
systems: - fstype file system type name (e.g., ``procfs'')
fspath mount point pathname (e.g., ``/proc'') - Depending on the file system type, other options may be rec
- ognized or
required; for example, most disk-based file systems require - a ``from''
option containing the pathname of a special device in addi - tion to the
options listed above. - By default only the super-user may call the mount() system
- call. This
restriction can be removed by setting the vfs.usermount - sysctl(8) variable to a non-zero value.
- The following flags may be specified to suppress default se
- mantics which
affect file system access. - MNT_RDONLY The file system should be treated as read
- only; even the
- super-user may not write on it. Specifying
- MNT_UPDATE
without this option will upgrade a read-on - ly file system
to read/write. - MNT_NOEXEC Do not allow files to be executed from the
- file system.
- MNT_NOSUID Do not honor setuid or setgid bits on files
- when execut
- ing them. This flag is set automatically
- when the
caller is not the super-user. - MNT_NOATIME Disable update of file access times.
- MNT_SNAPSHOT Create a snapshot of the file system. This
- is currently
- only supported on UFS2 file systems, see
- mksnap_ffs(8)
for more information. - MNT_SUIDDIR Directories with the SUID bit set chown new
- files to
- their own owner. This flag requires the
- SUIDDIR option
to have been compiled into the kernel to - have any
effect. See the mount(8) and chmod(2) - pages for more
information. - MNT_SYNCHRONOUS All I/O to the file system should be done
- synchronously.
- MNT_ASYNC All I/O to the file system should be done
- asyn
- chronously.
- MNT_FORCE Force a read-write mount even if the file
- system appears
- to be unclean. Dangerous. Together with
- MNT_UPDATE and
MNT_RDONLY, specify that the file system is - to be
forcibly downgraded to a read-only mount - even if some
files are open for writing. - MNT_NOCLUSTERR Disable read clustering.
- MNT_NOCLUSTERW Disable write clustering.
- The flag MNT_UPDATE indicates that the mount command is be
- ing applied to
an already mounted file system. This allows the mount flags - to be
changed without requiring that the file system be unmounted - and
remounted. Some file systems may not allow all flags to be - changed. For
example, many file systems will not allow a change from - read-write to
read-only. - The flag MNT_RELOAD causes the vfs subsystem to update its
- data structures pertaining to the specified already mounted file sys
- tem.
- The type argument names the file system. The types of file
- systems known
to the system can be obtained with lsvfs(1). - The data argument is a pointer to a structure that contains
- the type specific arguments to mount. The format for these argument
- structures is
described in the manual page for each file system. By con - vention file
system manual pages are named by prefixing ``mount_'' to the - name of the
file system as returned by lsvfs(1). Thus the NFS file sys - tem is
described by the mount_nfs(8) manual page. It should be - noted that a
manual page for default file systems, known as UFS and UFS2, - does not
exist. - The unmount() system call disassociates the file system from
- the specified mount point dir.
- The flags argument may include MNT_FORCE to specify that the
- file system
should be forcibly unmounted even if files are still active. - Active special devices continue to work, but any further accesses to
- any other
active files result in errors even if the file system is - later remounted.
- If the MNT_BYFSID flag is specified, dir should instead be a
- file system
ID encoded as ``FSID:val0:val1'', where val0 and val1 are - the contents of
the fsid_t val[] array in decimal. The file system that has - the specified file system ID will be unmounted.
RETURN VALUES
- The function returns the value 0 if successful; otherwise
- the value -1 is
returned and the global variable errno is set to indicate - the error.
ERRORS
- The mount() and nmount() system calls will fail when one of
- the following
occurs: - [EPERM] The caller is neither the super-user nor
- the owner of
- dir.
- [ENAMETOOLONG] A component of a pathname exceeded 255
- characters, or
- the entire length of a path name exceeded
- 1023 characters.
- [ELOOP] Too many symbolic links were encountered
- in translat
- ing a pathname.
- [ENOENT] A component of dir does not exist.
- [ENOTDIR] A component of name is not a directory,
- or a path pre
- fix of special is not a directory.
- [EBUSY] Another process currently holds a refer
- ence to dir.
- [EFAULT] The dir argument points outside the pro
- cess's allo
- cated address space.
- The following errors can occur for a ufs file system mount:
- [ENODEV] A component of ufs_args fspec does not
- exist.
- [ENOTBLK] The fspec argument is not a block device.
- [ENXIO] The major device number of fspec is out
- of range (this
- indicates no device driver exists for the
- associated
hardware). - [EBUSY] fspec is already mounted.
- [EMFILE] No space remains in the mount table.
- [EINVAL] The super block for the file system had a
- bad magic
- number or an out of range block size.
- [ENOMEM] Not enough memory was available to read
- the cylinder
- group information for the file system.
- [EIO] An I/O error occurred while reading the
- super block or
- cylinder group information.
- [EFAULT] The fspec argument points outside the
- process's allo
- cated address space.
- The following errors can occur for a nfs file system mount:
- [ETIMEDOUT] Nfs timed out trying to contact the serv
- er.
- [EFAULT] Some part of the information described by
- nfs_args
- points outside the process's allocated
- address space.
- The unmount() system call may fail with one of the following
- errors:
- [EPERM] The caller is neither the super-user nor
- the user who
- issued the corresponding mount() call.
- [ENAMETOOLONG] The length of the path name exceeded 1023
- characters.
- [EINVAL] The requested directory is not in the
- mount table.
- [ENOENT] The file system ID specified using
- MNT_BYFSID was not
- found in the mount table.
- [EINVAL] The file system ID specified using
- MNT_BYFSID could
- not be decoded.
- [EINVAL] The specified file system is the root
- file system.
- [EBUSY] A process is holding a reference to a
- file located on
- the file system.
- [EIO] An I/O error occurred while writing
- cached file system
- information.
- [EFAULT] The dir argument points outside the pro
- cess's allo
- cated address space.
- A ufs mount can also fail if the maximum number of file sys
- tems are currently mounted.
SEE ALSO
lsvfs(1), mksnap_ffs(8), mount(8), umount(8)
HISTORY
- The mount() and unmount() functions appeared in Version 6
- AT&T UNIX.
BUGS
- Some of the error codes need translation to more obvious
- messages.
- BSD February 23, 2005