MOUNT(2)

NAME
mount, umount - mount or remove file system

SYNOPSIS
mount(special, name, flags)
char *special, *name;
int flags;

umount(special)
char *special;

DESCRIPTION
Mount announces to the system that a removable file system has been mounted on the block-structured special file special; from now on, references to file name will refer to the root file on the newly mounted file system. Special and name are pointers to null-terminated strings containing the appropriate path names.

Name must exist already. Name must be a directory. Its old contents are inaccessible while the file system is mounted.

The following flags may be specified to suppress default semantics which affect filesystem access.

MNT_RDONLY
    The filesystem should be treated as read-only; Even the super-user may not write on it.

MNT_NOEXEC
    Do not allow files to be executed from the filesystem.

MNT_NOSUID
    Do not honor setuid or setgid bits on files when executing them.

MNT_NODEV
    Do not interpret special files on the filesystem.

MNT_SYNCHRONOUS
    All I/O to the filesystem should be done synchronously.

Umount announces to the system that the special file is no longer to contain a removable file system. The associated file reverts to its ordinary interpretation.

RETURN VALUE
Mount returns 0 if the action occurred, -1 if special is inaccessible or not an appropriate file, if name does not exist, if special is already mounted, if name is in use, or if there are already too many file systems mounted.

Umount returns 0 if the action occurred; -1 if if the special file is inaccessible or does not have a mounted file system, or if there are active files in the mounted file system.

ERRORS
Mount will fail when one of the following occurs:

[ENAMETOOLONG]
    A component of either pathname exceeded 255 characters, or the entire length of either path name exceeded 1023 characters.

[ELOOP]
    Too many symbolic links were encountered in translating either pathname.

[EPERM]
    The caller is not the super-user.

[ENOENT]
    A component of name does not exist.

[ENODEV]
    A component of special does not exist.

[ENOTBLK]
    Special is not a block device.

[ENXIO]
    The major device number of special is out of range (this indicates no device driver exists for the associated hardware).

[ENOTDIR]
    A component of name is not a directory, or a path prefix of special is not a directory.

[EINVAL]
    Either pathname contains a character with the high-order bit set.

[EINVAL]
    The super block for the file system had a bad magic number or an out of range block size.

[EBUSY]
    Another process currently holds a reference to name, or special is already mounted.

[EMFILE]
    No space remains in the mount table.

[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]
    Special or name points outside the process's allocated address space.

Umount may fail with one of the following errors:

[ENOTDIR]
    A component of the path prefix is not a directory.

[EINVAL]
    The pathname contains a character with the high-order bit set.

[ENAMETOOLONG]
    A component of a pathname exceeded 255 characters, or an entire path name exceeded 1023 characters.

[ELOOP]
    Too many symbolic links were encountered in translating the pathname.

[EPERM]
    The caller is not the super-user.

[ENODEV]
    Special does not exist.

[ENOTBLK]
    Special is not a block device.

[ENXIO]
    The major device number of special is out of range (this indicates no device driver exists for the associated hardware).

[EINVAL]
    The requested device is not in the mount table.

[EBUSY]
    A process is holding a reference to a file located on the file system.

[EIO]
    An I/O error occurred while writing the super block or other cached file system information.

[EFAULT]
    Special points outside the process's allocated address space.

SEE ALSO
mount(8), umount(8)

BUGS
Some of the error codes need translation to more obvious messages.

Physically write-protected and magnetic tape file systems must be mounted read-only or errors will occur when access times are updated, whether or not any explicit write is attempted.

MNT_SYNCHRONOUS is not currently implemented in the kernel but may be specified because the kernel ignores it.