1.\" Copyright (c) 1980, 1989, 1993 2.\" The Regents of the University of California. All rights reserved. 3.\" 4.\" Redistribution and use in source and binary forms, with or without 5.\" modification, are permitted provided that the following conditions 6.\" are met: 7.\" 1. Redistributions of source code must retain the above copyright 8.\" notice, this list of conditions and the following disclaimer. 9.\" 2. Redistributions in binary form must reproduce the above copyright 10.\" notice, this list of conditions and the following disclaimer in the 11.\" documentation and/or other materials provided with the distribution. 12.\" 3. Neither the name of the University nor the names of its contributors 13.\" may be used to endorse or promote products derived from this software 14.\" without specific prior written permission. 15.\" 16.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 17.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 20.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26.\" SUCH DAMAGE. 27.\" 28.\" @(#)mount.2 8.3 (Berkeley) 5/24/95 29.\" $FreeBSD: src/lib/libc/sys/mount.2,v 1.20.2.8 2003/01/17 22:02:42 joerg Exp $ 30.\" $DragonFly: src/lib/libc/sys/mount.2,v 1.6 2008/02/09 00:10:29 swildner Exp $ 31.\" 32.Dd May 24, 1995 33.Dt MOUNT 2 34.Os 35.Sh NAME 36.Nm mount , 37.Nm unmount 38.Nd mount or dismount a filesystem 39.Sh LIBRARY 40.Lb libc 41.Sh SYNOPSIS 42.In sys/param.h 43.In sys/mount.h 44.Ft int 45.Fn mount "const char *type" "const char *dir" "int flags" "void *data" 46.Ft int 47.Fn unmount "const char *dir" "int flags" 48.Sh DESCRIPTION 49The 50.Fn mount 51function grafts 52a filesystem object onto the system file tree 53at the point 54.Ar dir . 55The argument 56.Ar data 57describes the filesystem object to be mounted. 58The argument 59.Ar type 60tells the kernel how to interpret 61.Ar data 62(See 63.Ar type 64below). 65The contents of the filesystem 66become available through the new mount point 67.Ar dir . 68Any files in 69.Ar dir 70at the time 71of a successful mount are swept under the carpet so to speak, and 72are unavailable until the filesystem is unmounted. 73.Pp 74By default only the super-user may call the 75.Fn mount 76function. 77This restriction can be removed by setting the sysctl 78.Va vfs.usermount 79to a non-zero value. 80.Pp 81The following 82.Ar flags 83may be specified to 84suppress default semantics which affect filesystem access. 85.Bl -tag -width MNT_SYNCHRONOUS 86.It Dv MNT_RDONLY 87The filesystem should be treated as read-only; 88Even the super-user may not write on it. 89Specifying MNT_UPDATE without this option will upgrade 90a read-only filesystem to read/write. 91.It Dv MNT_NOEXEC 92Do not allow files to be executed from the filesystem. 93.It Dv MNT_NOSUID 94Do not honor setuid or setgid bits on files when executing them. 95This flag is set automatically when the caller is not the super-user. 96.It Dv MNT_NOATIME 97Disable update of file access times. 98.It Dv MNT_NODEV 99Do not interpret special files on the filesystem. 100This flag is set automatically when the caller is not the super-user. 101.It Dv MNT_SUIDDIR 102Directories with the SUID bit set chown new files to their own owner. 103.It Dv MNT_SYNCHRONOUS 104All I/O to the filesystem should be done synchronously. 105.It Dv MNT_ASYNC 106All I/O to the filesystem should be done asynchronously. 107.It Dv MNT_FORCE 108Force a read-write mount even if the filesystem appears to be unclean. 109Dangerous. 110.It Dv MNT_NOCLUSTERR 111Disable read clustering. 112.It Dv MNT_NOCLUSTERW 113Disable write clustering. 114.El 115.Pp 116The flag 117.Dv MNT_UPDATE 118indicates that the mount command is being applied 119to an already mounted filesystem. 120This allows the mount flags to be changed without requiring 121that the filesystem be unmounted and remounted. 122Some filesystems may not allow all flags to be changed. 123For example, 124many filesystems will not allow a change from read-write to read-only. 125.Pp 126The flag 127.Dv MNT_RELOAD 128causes the vfs subsystem to update its data structures pertaining to 129the specified already mounted filesystem. 130.Pp 131The 132.Fa type 133argument names the filesystem. 134The types of filesystems known to the system can be obtained with 135.Xr lsvfs 1 . 136.Pp 137.Fa Data 138is a pointer to a structure that contains the type 139specific arguments to mount. 140The format for these argument structures is described in the 141manual page for each filesystem. 142By convention filesystem manual pages are named 143by prefixing ``mount_'' to the name of the filesystem as returned by 144.Xr lsvfs 1 . 145Thus the 146.Nm NFS 147filesystem is described by the 148.Xr mount_nfs 8 149manual page. 150.Pp 151The 152.Fn unmount 153function call disassociates the filesystem from the specified 154mount point 155.Fa dir . 156.Pp 157The 158.Fa flags 159argument may specify 160.Dv MNT_FORCE 161to specify that the filesystem should be forcibly unmounted or made read-only 162(if MNT_UPDATE and MNT_RDONLY are also specified) 163even if files are still active. 164Active special devices continue to work, 165but any further accesses to any other active files result in errors 166even if the filesystem is later remounted. 167.Pp 168The 169.Dv MNT_SUIDDIR 170option requires the SUIDDIR option to have been compiled into the kernel 171to have any effect. 172See the 173.Xr mount 8 174and 175.Xr chmod 2 176pages for more information. 177.Sh RETURN VALUES 178.Rv -std 179.Sh ERRORS 180The 181.Fn mount 182function will fail when one of the following occurs: 183.Bl -tag -width Er 184.It Bq Er EPERM 185The caller is neither the super-user nor the owner of 186.Ar dir , 187or 188.Ar dir 189belongs to a filesystem that does not support stacked mounts. 190.It Bq Er ENAMETOOLONG 191A component of a pathname exceeded 255 characters, 192or the entire length of a path name exceeded 1023 characters. 193.It Bq Er ELOOP 194Too many symbolic links were encountered in translating a pathname. 195.It Bq Er ENOENT 196A component of 197.Fa dir 198does not exist. 199.It Bq Er ENOTDIR 200A component of 201.Ar name 202is not a directory, 203or a path prefix of 204.Ar special 205is not a directory. 206.It Bq Er EBUSY 207Another process currently holds a reference to 208.Fa dir . 209.It Bq Er EFAULT 210.Fa Dir 211points outside the process's allocated address space. 212.El 213.Pp 214The following errors can occur for a 215.Em ufs 216filesystem mount: 217.Bl -tag -width Er 218.It Bq Er ENODEV 219A component of ufs_args 220.Ar fspec 221does not exist. 222.It Bq Er ENOTBLK 223.Ar Fspec 224is not a block device. 225.It Bq Er ENXIO 226The major device number of 227.Ar fspec 228is out of range (this indicates no device driver exists 229for the associated hardware). 230.It Bq Er EBUSY 231.Ar Fspec 232is already mounted. 233.It Bq Er EMFILE 234No space remains in the mount table. 235.It Bq Er EINVAL 236The super block for the filesystem had a bad magic 237number or an out of range block size. 238.It Bq Er ENOMEM 239Not enough memory was available to read the cylinder 240group information for the filesystem. 241.It Bq Er EIO 242An I/O error occurred while reading the super block or 243cylinder group information. 244.It Bq Er EFAULT 245.Ar Fspec 246points outside the process's allocated address space. 247.El 248.Pp 249The following errors can occur for a 250.Em nfs 251filesystem mount: 252.Bl -tag -width Er 253.It Bq Er ETIMEDOUT 254.Em Nfs 255timed out trying to contact the server. 256.It Bq Er EFAULT 257Some part of the information described by nfs_args 258points outside the process's allocated address space. 259.El 260.Pp 261The following errors can occur for a 262.Em mfs 263filesystem mount: 264.Bl -tag -width Er 265.It Bq Er EMFILE 266No space remains in the mount table. 267.It Bq Er EINVAL 268The super block for the filesystem had a bad magic 269number or an out of range block size. 270.It Bq Er ENOMEM 271Not enough memory was available to read the cylinder 272group information for the filesystem. 273.It Bq Er EIO 274A paging error occurred while reading the super block or 275cylinder group information. 276.It Bq Er EFAULT 277.Em Name 278points outside the process's allocated address space. 279.El 280.Pp 281The 282.Fn unmount 283function may fail with one of the following errors: 284.Bl -tag -width Er 285.It Bq Er EPERM 286The caller is neither the super-user nor the user who issued the corresponding 287.Xr mount 2 288call. 289.It Bq Er ENOTDIR 290A component of the path is not a directory. 291.It Bq Er ENAMETOOLONG 292A component of a pathname exceeded 255 characters, 293or an entire path name exceeded 1023 characters. 294.It Bq Er ELOOP 295Too many symbolic links were encountered in translating the pathname. 296.It Bq Er EINVAL 297The requested directory is not in the mount table. 298.It Bq Er EBUSY 299A process is holding a reference to a file located 300on the filesystem. 301.It Bq Er EIO 302An I/O error occurred while writing cached filesystem information. 303.It Bq Er EFAULT 304.Fa Dir 305points outside the process's allocated address space. 306.El 307.Pp 308A 309.Em ufs 310or 311.Em mfs 312mount can also fail if the maximum number of filesystems are currently 313mounted. 314.Sh SEE ALSO 315.Xr lsvfs 1 , 316.Xr mountctl 2 , 317.Xr mfs 8 , 318.Xr mount 8 , 319.Xr sysctl 8 , 320.Xr umount 8 321.Sh HISTORY 322.Fn Mount 323and 324.Fn unmount 325function calls appeared in 326.At v6 . 327.Sh BUGS 328Some of the error codes need translation to more obvious messages. 329