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(), except 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 array
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 recognized or required; for
example, most disk-based file systems require a
‘‘from’’ option containing the pathname of
a special device in addition 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 semantics 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-only
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 executing 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 asynchronously.

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 being 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 system.

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 convention
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 system 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

Upon successful completion, the
value 0 is returned; 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 translating a pathname.

[ENOENT]

A component of
dir does not exist.

[ENOTDIR]

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