8348ea4e4c8790d2f076b7ef4267b0a08e79ef2f
[dragonfly.git] / lib / libc / sys / mountctl.2
1 .\"
2 .\" Copyright (c) 2008
3 .\"     The DragonFly Project.  All rights reserved.
4 .\"
5 .\" Redistribution and use in source and binary forms, with or without
6 .\" modification, are permitted provided that the following conditions
7 .\" are met:
8 .\"
9 .\" 1. Redistributions of source code must retain the above copyright
10 .\"    notice, this list of conditions and the following disclaimer.
11 .\" 2. Redistributions in binary form must reproduce the above copyright
12 .\"    notice, this list of conditions and the following disclaimer in
13 .\"    the documentation and/or other materials provided with the
14 .\"    distribution.
15 .\" 3. Neither the name of The DragonFly Project nor the names of its
16 .\"    contributors may be used to endorse or promote products derived
17 .\"    from this software without specific, prior written permission.
18 .\"
19 .\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 .\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 .\" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
22 .\" FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
23 .\" COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
24 .\" INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
25 .\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
26 .\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
27 .\" AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28 .\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
29 .\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30 .\" SUCH DAMAGE.
31 .\"
32 .\" $DragonFly: src/lib/libc/sys/mountctl.2,v 1.2 2008/02/09 02:31:35 swildner Exp $
33 .\"
34 .Dd February 8, 2008
35 .Os
36 .Dt MOUNTCTL 2
37 .Sh NAME
38 .Nm mountctl
39 .Nd execute a mount control operation
40 .Sh LIBRARY
41 .Lb libc
42 .Sh SYNOPSIS
43 .In mountctl.h
44 .Ft int
45 .Fo mountctl
46 .Fa "const char *path"
47 .Fa "int op"
48 .Fa "int fd"
49 .Fa "void *ctl"
50 .Fa "int ctllen"
51 .Fa "void *buf"
52 .Fa "int buflen"
53 .Fc
54 .Sh DESCRIPTION
55 The
56 .Fn mountctl
57 system call executes the mount control operation
58 .Fa op
59 on the mount point
60 .Fa path .
61 An optional file descriptor
62 .Fa fd
63 can be passed, or set to -1 if unneeded.
64 The
65 .Fa ctl
66 argument is for passing operation specific data and usually points to
67 some struct (see
68 .Sx CONTROL OPERATIONS
69 for further information).
70 The data's size is specified by
71 .Fa ctllen .
72 The
73 .Fa buf
74 and
75 .Fa buflen
76 arguments are used if the operation needs to return data to the caller
77 or set to
78 .Dv NULL
79 and 0 if unused.
80 .Sh CONTROL OPERATIONS
81 The following operations are defined in
82 .In mountctl.h :
83 .Bl -tag -width indent
84 .It Dv MOUNTCTL_SET_EXPORT
85 Set export control of a filesystem.
86 This operation needs a
87 .Vt struct export_args
88 passed in
89 .Fa ctl .
90 Note that export control for numerous filesystems may still only be settable
91 with
92 .Xr mount 2 .
93 New software should attempt to use
94 .Fn mountctl
95 before using the old
96 .Xr mount 2
97 method.
98 .It Dv MOUNTCTL_INSTALL_VFS_JOURNAL
99 Install a journal on a mount point.
100 This operation needs a
101 .Vt struct mountctl_install_journal
102 passed in
103 .Fa ctl .
104 The journal file must be specified via
105 .Fa fd .
106 A mount point may have multiple journals attached to it.
107 .It Dv MOUNTCTL_REMOVE_VFS_JOURNAL
108 Disassociate a journal from a mount point.
109 This operation needs a
110 .Vt struct mountctl_remove_journal
111 passed in
112 .Fa ctl .
113 .It Dv MOUNTCTL_RESTART_VFS_JOURNAL
114 Restart a journal with a new descriptor.
115 This operation needs a
116 .Vt struct mountctl_restart_journal
117 passed in
118 .Fa ctl .
119 The journal file must be specified via
120 .Fa fd .
121 .It Dv MOUNTCTL_STATUS_VFS_JOURNAL
122 Return a journal's status.
123 This operation needs a
124 .Vt struct mountctl_status_journal
125 passed in
126 .Fa ctl
127 and an array of
128 .Vt struct mountctl_journal_ret_status
129 in
130 .Fa buf .
131 .\" XXX Not yet implemented:
132 .\".It Dv MOUNTCTL_INSTALL_BLK_JOURNAL
133 .\".It Dv MOUNTCTL_REMOVE_BLK_JOURNAL
134 .\".It Dv MOUNTCTL_RESYNC_BLK_JOURNAL
135 .\".It Dv MOUNTCTL_RESYNC_VFS_JOURNAL
136 .\".It Dv MOUNTCTL_STATUS_BLK_JOURNAL
137 .El
138 .Sh RETURN VALUES
139 .Rv -std
140 .Sh ERRORS
141 The
142 .Fn mountctl
143 function will fail when one of the following occurs:
144 .Bl -tag -width Er
145 .It Bq Er EBADF
146 .Fa \&Fd
147 is not an active descriptor.
148 .It Bq Er EINVAL
149 The specified
150 .Fa ctllen
151 is not 0-1024,
152 .Fa buflen
153 is not 0-16384, or
154 .Fa path
155 is
156 .Dv NULL .
157 .It Bq Er EPERM
158 The caller is not the super-user.
159 .El
160 .Sh SEE ALSO
161 .Xr mount 2 ,
162 .Xr mountctl 8
163 .Sh HISTORY
164 The
165 .Fn mountctl
166 system call first appeared in
167 .Dx 1.1 .
168 .Sh AUTHORS
169 .An -nosplit
170 The
171 .Fn mountctl
172 system call was written by
173 .An Matthew Dillon
174 and this manual page was written by
175 .An Sascha Wildner .