NAME | SYNOPSIS | DESCRIPTION | RETURN VALUES | ERRORS | SUMMARY OF TRUSTED SOLARIS CHANGES | SEE ALSO | NOTES
#include <sys/types.h> #include <sys/mount.h> #include <sys/mntent.h>int mount(const char *spec, const char *dir, int mflag, char *fstype, char *dataptr, int datalen, char *optptr, int optlen);
The mount() function requests that a removable file system contained on the block special file identified by spec be mounted on the directory identified by dir. The spec and dir arguments are pointers to path names.
After a successful call to mount(), all references to the file dir refer to the root directory on the mounted file system. The mounted file system is inserted into the kernel list of all mounted file systems. This list can be examined through the mounted file system table (see mnttab(4)).
The fstype argument is the file system type name. Standard file system names are defined with the prefix MNTTYPE_ in <sys/mntent.h>.
The dataptr argument is 0 if no file system-specific data is to be passed; otherwise it points to an area of size datalen that contains the file system-specific data for this mount and the MS_DATA flag should be set.
If the MS_OPTIONSTR flag is set, then optptr points to a buffer containing the list of options to be used for this mount. The optlen argument specifies the length of the buffer. On completion of the mount() call, the options in effect for the mounted file system are returned in this buffer. If MS_OPTIONSTR is not specified, then the options for this mount will not appear in the mounted file systems table.
The mflag argument is constructed by a bitwise-inclusive-OR of flags from the following list, defined in <sys/mount.h>.
If this flag is set, the dataptr and datalen arguments describe a block of file system-specific binary data at address dataptr of length datalen. This is interpreted by file system-specific code within the operating system and its format depends on the file system type. If a particular file system type does not require this data, dataptr and datalen should both be 0.
Mount a file system globally if the system is configured and booted as part of a cluster (see clinfo(1M)).
This option prevents programs that are marked set-user-ID or set-group-ID from executing (see chmod(1)). It also causes open(2) to return ENXIO when attempting to open block or character special files.
If this flag is set, the optptr and optlen arguments describe a character buffer at address optptr of size optlen. When calling mount(), the character buffer should contain a null-terminated string of options to be passed to the file system-specific code within the operating system. On a successful return, the file system-specific code will return the list of options recognized. Unrecognized options are ignored. The format of the string is a list of option names separated by commas. Options that have values (rather than binary options such as suid or nosuid), are separated by “=“ such as dev=2c4046c. Standard option names are defined in <sys/mntent.h>. The slabel, low_range, and hi_range values must be hexadecimal strings starting with 0x followed by exactly 68 hex digits. The allowed and forced values must be hexadecimal strings starting with 0x followed by exactly 32 hex digits. Only strings defined in the “C” locale are supported. The maximum length option string that can be passed to or returned from a mount() call is defined by the MAX_MNTOPT_STR constant. The buffer should be long enough to contain more options than were passed in, as the state of any default options that were not passed in the input option string may also be returned in the recognized options list that is returned.
Allow the file system to be mounted over an existing file system mounted on dir, making the underlying file system inaccessible. If a mount is attempted on a pre-existing mount point without setting this flag, the mount will fail.
The file system should be mounted for reading only. This flag should also be specified for file systems that are incapable of writing (for example, CDROM). Without this flag, writing is permitted according to individual file accessibility.
Remounts a read-only file system as read-write.
The mount() system call may be invoked for all file system types except namefs by a calling process with the PRIV_SYS_MOUNT
privilege. For the namefs file
system, the calling process must either be the owner of dir or assert the PRIV_FILE_OWNER
privilege. When mounting a UFS file system, the calling process should assert the PRIV_SYS_FS_CONFIG
privilege. Otherwise, the mount succeeds, but logging is not enabled/disabled, errno is set to EPERM, and the user sees an error message.
The mount() function will fail if:
Search permission is denied on a component of spec or dir. To override this restriction, the calling process may assert one or both of these
privileges: PRIV_FILE_DAC_SEARCH
and PRIV_FILE_MAC_SEARCH
.
Write permission is denied to the namefs file system specified in dir. To override this restriction, the calling process may assert one or both of these privileges: PRIV_FILE_DAC_WRITE
and PRIV_FILE_MAC_WRITE
.
The dir argument is currently mounted on, is someone's current working directory, or is otherwise busy; the device associated with spec is currently mounted; or there are no more mount table entries.
The spec, dir, fstype, or dataptr argument points outside the allocated address space of the process.
The super block has an invalid magic number or the fstype is invalid.
Too many symbolic links were encountered in translating spec or dir.
The length of the path argument exceeds PATH_MAX, or the length of a path component exceeds NAME_MAX while _POSIX_NO_TRUNC is in effect.
None of the named files exists or is a null pathname.
The path argument points to a remote machine and the link to that machine is no longer active.
The file system state in the super block is not FsOKAY and mflag requests write permission.
The spec argument is not a block special device.
The dir argument is not a directory, or a component of a path prefix is not a directory.
A global mount is attempted (the MS_GLOBAL flag is set in mflag) on a machine which is not booted as a cluster or a local mount is attempted and dir is within a globally mounted file system.
The device associated with spec does not exist.
The length of the option string to be returned in the optptr argument exceeds the size of the buffer specified by optlen.
The calling process does not own dir and dir is type namefs. To override this restriction, the calling process may assert the PRIV_FILE_OWNER
privilege.
dir is not a file system of type namefs and the calling process has not asserted the PRIV_SYS_MOUNT
privilege.
The spec argument is remote and cannot be mounted.
The spec argument is write protected and mflag requests write permission.
The mount() function will succeed, but logging will not be enabled/disabled if:
dir is a UFS file system and the calling process has not asserted the PRIV_SYS_FS_CONFIG
privilege.
Appropriate privilege is required to override access, logging, or ownership checks.
The mount() system call may be invoked for all file system types except namefs by a calling process with the PRIV_SYS_MOUNT
privilege. For the namefs file system, the calling process
must either be the owner of dir or assert the PRIV_FILE_OWNER
privilege. When mounting a UFS file system, the calling process should assert the PRIV_SYS_FS_CONFIG
privilege. Otherwise, the mount
succeeds, but logging is not enabled/disabled and errno is set to EPERM.
MS_OPTIONSTR-type option strings should be used.
Some flag bits set file system options that can also be passed in an option string. Options are first set from the option string with the last setting of an option in the string determining the value to be set by the option string. Any options controlled by flags are then applied, overriding any value set by the option string.
NAME | SYNOPSIS | DESCRIPTION | RETURN VALUES | ERRORS | SUMMARY OF TRUSTED SOLARIS CHANGES | SEE ALSO | NOTES