NAME
mount() — mount a file system
SYNOPSIS
#include <sys/mount.h>
int mount(const char *fs, const char *path, int mflag);
int mount(const char *fs,
const char *path,
int mflag,
const char *fstype,
const char *dataptr,
int datalen);
DESCRIPTION
The
mount()
system call requests that a file system identified by
fs
be mounted on the file identified by
path.
mflag
contains a bit-mask of flags (described below).
Note that the
MS_DATA
flag must be set
for the six-argument version of the call.
fstype
is the file system type name.
It is the same name that
sysfs(2)
uses.
The last two arguments together describe
a block of file-system-specific data at address
dataptr
of length
datalen.
This is interpreted by file-system-specific code
within the operating system
and its format depends upon the file system type.
A particular file system type may not require this data, in which case
dataptr
and
datalen
should both be zero.
The mounting of some file system types
may be restricted to a user with appropriate privileges.
mount()
can be invoked only by a user who has appropriate privileges.
Upon successful completion, references to the file
path
will refer to the root directory of the mounted file system.
mflag
contains a bit-mask of flag values, which includes the following defined in
<sys/mount.h>:
- MS_DATA
This is ordinarily required.
It indicates the presence of the
fstype,
dataptr,
and
datalen
arguments.
(For backward compatibility, if this flag is not set, the
fstype
is assumed to be that of the root file system, and
dataptr
and
datalen
are assumed to be zero.)
- MS_RDONLY
This is used to control write permission on the mounted file system.
If not set, writing is permitted according to individual file accessibility.
- MS_NOSUID
This flag disables set-user-ID and set-group-ID
behavior on this file system.
- MS_QUOTA
This causes quotas to be enabled if the file system supports quotas.
If
fstype
is specified as:
- MNTTYPE_HFS
Mount a local HFS file system.
dataptr
points to a structure of the following format,
if the options described below need to be specified for the mount:
struct ufs_args {
char *fspec;
int flags;
};
fspec
points to the name of the block special file that is to be mounted.
This is identical in use and function to the first argument,
fs,
of the system call.
flags
points to a bit map that sets options.
The following values of the bits are defined in
<sys/mount.h>:
- MS_DELAY
Writes to disks are to be delayed until the buffer
needs to be reused.
This is the default on Series 800 systems, as it was prior to release 10.0.
- MS_BEHIND
Writes to disks are to be done asynchronously,
where possible, without waiting for completion.
This is the default on Series 700 systems, as it was prior to release 10.0.
MS_BEHIND
and
MS_DELAY
are mutually exclusive.
- MS_NO_FSASYNC
Rigorous posting of file system metadata is to be used.
This is the default.
- MS_FSASYNC
Relaxed posting of file system metadata is to be used.
This may lead to better performance for certain applications; but
there is increased potential for data loss in case of a crash.
MS_FSASYNC
and
MS_NO_FSASYNC
are mutually exclusive.
RETURN VALUE
mount()
returns the following values:
- 0
Successful completion.
- -1
Failure.
errno
is set to indicate the error.
ERRORS
If
mount()
fails,
errno
is set to one of the following values.
- [EACCES]
A component of the path prefix denies search permission.
- [EBUSY]
path
is currently mounted on, is someone's current working directory, or is otherwise busy.
- [EBUSY]
The file system associated with
fs
is currently mounted.
- [EBUSY]
The system cannot allocate the necessary resources for this mount.
- [EFAULT]
fs,
path
or
dataptr
points outside the allocated address space of the process.
The reliable
detection of this error is implementation dependent.
- [EINVAL]
An argument to the system call is invalid, or a sanity check failed.
- [ELOOP]
Too many symbolic links were encountered in translating a path name argument.
- [ENAMETOOLONG]
The length of a path name exceeds
PATH_MAX,
or a path name component is longer than
NAME_MAX
while
_POSIX_NO_TRUNC
is in effect.
- [ENODEV]
fstype
is a file system that is not been configured into the kernel.
- [ENOENT]
A named file does not exist.
- [ENOENT]
fs
or
path
is null.
- [ENOTBLK]
fs
is not a block special device and the file system type requires it to be.
- [ENOTDIR]
A component of a path prefix is not a directory.
- [ENOTDIR]
path
is not a directory.
- [ENXIO]
The device associated with
fs
does not exist and the file system type requires it to be.
- [EPERM]
The process does not have the appropriate privilege
and the file system type requires it.
- [EROFS]
The requested file system is write protected and
mflag
requests write permission.
WARNINGS
If
mount()
is called from the program level (i.e., not called with the
mount
command (see
mount(1M)),
the table of mounted devices contained in
/etc/mnttab
is not updated.
The updating of
/etc/mnttab
is performed by the
mount
and
syncer
commands (see
mount(1M)
and
syncer(1M)).