]> git.saurik.com Git - apple/xnu.git/blob - bsd/man/man2/mount.2
xnu-4903.270.47.tar.gz
[apple/xnu.git] / bsd / man / man2 / mount.2
1 .\" $OpenBSD: mount.2,v 1.6 1997/03/09 19:41:16 millert Exp $
2 .\" $NetBSD: mount.2,v 1.12 1996/02/29 23:47:48 jtc Exp $
3 .\"
4 .\" Copyright (c) 1980, 1989, 1993
5 .\" The Regents of the University of California. All rights reserved.
6 .\"
7 .\" Redistribution and use in source and binary forms, with or without
8 .\" modification, are permitted provided that the following conditions
9 .\" are met:
10 .\" 1. Redistributions of source code must retain the above copyright
11 .\" notice, this list of conditions and the following disclaimer.
12 .\" 2. Redistributions in binary form must reproduce the above copyright
13 .\" notice, this list of conditions and the following disclaimer in the
14 .\" documentation and/or other materials provided with the distribution.
15 .\" 3. All advertising materials mentioning features or use of this software
16 .\" must display the following acknowledgement:
17 .\" This product includes software developed by the University of
18 .\" California, Berkeley and its contributors.
19 .\" 4. Neither the name of the University nor the names of its contributors
20 .\" may be used to endorse or promote products derived from this software
21 .\" without specific prior written permission.
22 .\"
23 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
24 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26 .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
27 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33 .\" SUCH DAMAGE.
34 .\"
35 .\" @(#)mount.2 8.2 (Berkeley) 12/11/93
36 .\"
37 .Dd December 11, 1993
38 .Dt MOUNT 2
39 .Os BSD 4
40 .Sh NAME
41 .Nm mount ,
42 .Nm fmount,
43 .Nm unmount
44 .Nd mount or dismount a filesystem
45 .Sh SYNOPSIS
46 .Fd #include <sys/param.h>
47 .Fd #include <sys/mount.h>
48 .Ft int
49 .Fn mount "const char *type" "const char *dir" "int flags" "void *data"
50 .Ft int
51 .Fn fmount "const char *type" "int fd" "int flags" "void *data"
52 .Ft int
53 .Fn unmount "const char *dir" "int flags"
54 .Sh DESCRIPTION
55 The
56 .Fn mount
57 function grafts
58 a filesystem object onto the system file tree
59 at the point
60 .Ar dir .
61 The argument
62 .Ar data
63 describes the filesystem object to be mounted.
64 The argument
65 .Ar type
66 tells the kernel how to interpret
67 .Ar data
68 (See
69 .Ar type
70 below).
71 The contents of the filesystem
72 become available through the new mount point
73 .Ar dir .
74 Any files in
75 .Ar dir
76 at the time
77 of a successful mount are swept under the carpet so to speak, and
78 are unavailable until the filesystem is unmounted.
79 .Pp
80 The following
81 .Ar flags
82 may be specified to
83 suppress default semantics which affect filesystem access.
84 .Bl -tag -width MNT_SYNCHRONOUS
85 .It Dv MNT_RDONLY
86 The filesystem should be treated as read-only;
87 Even the super-user may not write on it.
88 .It Dv MNT_NOEXEC
89 Do not allow files to be executed from the filesystem.
90 .It Dv MNT_NOSUID
91 Do not honor setuid or setgid bits on files when executing them.
92 .It Dv MNT_NODEV
93 Do not interpret special files on the filesystem.
94 .It Dv MNT_UNION
95 Union with underlying filesystem instead of obscuring it.
96 .It Dv MNT_SYNCHRONOUS
97 All I/O to the filesystem should be done synchronously.
98 .It Dv MNT_CPROTECT
99 Enable data protection on the filesystem if the filesystem is configured for it.
100 .El
101 .Pp
102 The flag
103 .Dv MNT_UPDATE
104 indicates that the mount command is being applied
105 to an already mounted filesystem.
106 This allows the mount flags to be changed without requiring
107 that the filesystem be unmounted and remounted.
108 Some filesystems may not allow all flags to be changed.
109 For example,
110 most filesystems will not allow a change from read-write to read-only.
111 .Pp
112 The flag
113 .Dv MNT_RELOAD
114 causes the vfs subsystem to update its data structures pertaining to
115 the specified already mounted filesystem.
116 .Pp
117 The
118 .Fa type
119 argument defines the type of the filesystem.
120 .Pp
121 .Fa Data
122 is a pointer to a structure that contains the type
123 specific arguments to mount.
124 The format for these argument structures is described in the
125 manual page for each filesystem.
126 .Pp
127 The
128 .Fn fmount
129 function call is equivalent to the
130 .Fn mount
131 function call, except in the use of the second argument.
132 It takes an open file descriptor representing mount point
133 instead of the string literal containing full path to the mount
134 point in the filesystem hierarchy.
135 .Pp
136 The
137 .Fn unmount
138 function call disassociates the filesystem from the specified
139 mount point
140 .Fa dir .
141 .Pp
142 The
143 .Fa flags
144 argument may specify
145 .Dv MNT_FORCE
146 to specify that the filesystem should be forcibly unmounted even if files are
147 still active.
148 Active special devices continue to work,
149 but any further accesses to any other active files result in errors
150 even if the filesystem is later remounted.
151 .Sh RETURN VALUES
152 The
153 .Fn mount
154 and
155 .Fn fmount
156 return the value 0 if the mount was successful, otherwise -1 is returned
157 and the variable
158 .Va errno
159 is set to indicate the error.
160 .Pp
161 .Nm unmount
162 returns the value 0 if the unmount succeeded; otherwise -1 is returned
163 and the variable
164 .Va errno
165 is set to indicate the error.
166 .Sh ERRORS
167 .Fn mount
168 and
169 .Fn fmount
170 will fail when one of the following occurs:
171 .Bl -tag -width [ENAMETOOLONG]
172 .It Bq Er EPERM
173 The caller is not the super-user, and the device-node and the mountpoint
174 do not have adequate ownership and permissions.
175 .It Bq Er ENAMETOOLONG
176 A component of a pathname exceeded
177 .Dv {NAME_MAX}
178 characters, or an entire path name exceeded
179 .Dv {PATH_MAX}
180 characters.
181 .It Bq Er ELOOP
182 Too many symbolic links were encountered in translating a pathname.
183 .It Bq Er ENOENT
184 A component of
185 .Fa dir
186 does not exist.
187 .It Bq Er ENOTDIR
188 A component of
189 .Ar name
190 is not a directory,
191 or a path prefix of
192 .Ar special
193 is not a directory.
194 .It Bq Er EINVAL
195 A pathname contains a character with the high-order bit set.
196 .It Bq Er EBUSY
197 Another process currently holds a reference to
198 .Fa dir .
199 .It Bq Er EFAULT
200 .Fa Dir
201 points outside the process's allocated address space.
202 .El
203 .Pp
204 .Nm unmount
205 may fail with one of the following errors:
206 .Bl -tag -width [ENAMETOOLONG]
207 .It Bq Er EPERM
208 The caller is not the super-user, and the
209 .Nm mount()
210 was not done by the user.
211 .It Bq Er ENOTDIR
212 A component of the path is not a directory.
213 .It Bq Er EINVAL
214 The pathname contains a character with the high-order bit set.
215 .It Bq Er ENAMETOOLONG
216 A component of a pathname exceeded
217 .Dv {NAME_MAX}
218 characters, or an entire path name exceeded
219 .Dv {PATH_MAX}
220 characters.
221 .It Bq Er ELOOP
222 Too many symbolic links were encountered in translating the pathname.
223 .It Bq Er EINVAL
224 The requested directory is not in the mount table.
225 .It Bq Er EBUSY
226 A process is holding a reference to a file located
227 on the filesystem.
228 .It Bq Er EIO
229 An I/O error occurred while writing cached filesystem information.
230 .It Bq Er EFAULT
231 .Fa Dir
232 points outside the process's allocated address space.
233 .El
234 .Sh SEE ALSO
235 .Xr mount 8 ,
236 .Xr unmount 8 ,
237 .Xr open 2
238 .Sh BUGS
239 Some of the error codes need translation to more obvious messages.
240 .Sh HISTORY
241 .Fn mount
242 and
243 .Fn unmount
244 function calls appeared in
245 .At v6 .
246 .Fn fmount
247 function call first appeared in macOS version 10.13.