xref: /dragonfly/lib/libc/sys/mountctl.2 (revision 6e278935)
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.Dd July 21, 2009
33.Dt MOUNTCTL 2
34.Os
35.Sh NAME
36.Nm mountctl
37.Nd execute a mount control operation
38.Sh LIBRARY
39.Lb libc
40.Sh SYNOPSIS
41.In sys/mountctl.h
42.Ft int
43.Fo mountctl
44.Fa "const char *path"
45.Fa "int op"
46.Fa "int fd"
47.Fa "void *ctl"
48.Fa "int ctllen"
49.Fa "void *buf"
50.Fa "int buflen"
51.Fc
52.Sh DESCRIPTION
53The
54.Fn mountctl
55system call executes the mount control operation
56.Fa op
57on the mount point
58.Fa path .
59An optional file descriptor
60.Fa fd
61can be passed, or set to -1 if unneeded.
62The
63.Fa ctl
64argument is for passing operation specific data and usually points to
65some struct (see
66.Sx CONTROL OPERATIONS
67for further information).
68The data's size is specified by
69.Fa ctllen .
70The
71.Fa buf
72and
73.Fa buflen
74arguments are used if the operation needs to return data to the caller
75or set to
76.Dv NULL
77and 0 if unused.
78.Sh CONTROL OPERATIONS
79The following operations are defined in
80.In sys/mountctl.h :
81.Bl -tag -width indent
82.It Dv MOUNTCTL_SET_EXPORT
83Set export control of a filesystem.
84This operation needs a
85.Vt struct export_args
86passed in
87.Fa ctl .
88Note that export control for numerous filesystems may still only be settable
89with
90.Xr mount 2 .
91New software should attempt to use
92.Fn mountctl
93before using the old
94.Xr mount 2
95method.
96.It Dv MOUNTCTL_INSTALL_VFS_JOURNAL
97Install a journal on a mount point.
98This operation needs a
99.Vt struct mountctl_install_journal
100passed in
101.Fa ctl .
102The journal file must be specified via
103.Fa fd .
104A mount point may have multiple journals attached to it.
105.It Dv MOUNTCTL_REMOVE_VFS_JOURNAL
106Disassociate a journal from a mount point.
107This operation needs a
108.Vt struct mountctl_remove_journal
109passed in
110.Fa ctl .
111.It Dv MOUNTCTL_RESTART_VFS_JOURNAL
112Restart a journal with a new descriptor.
113This operation needs a
114.Vt struct mountctl_restart_journal
115passed in
116.Fa ctl .
117The journal file must be specified via
118.Fa fd .
119.It Dv MOUNTCTL_STATUS_VFS_JOURNAL
120Return a journal's status.
121This operation needs a
122.Vt struct mountctl_status_journal
123passed in
124.Fa ctl
125and an array of
126.Vt struct mountctl_journal_ret_status
127in
128.Fa buf .
129.It MOUNTCTL_MOUNTFLAGS
130It will store a comma separated string buffer in the
131.Fa buf
132parameter with the name list of the currently set
133user mount flags. The
134.Fa buf
135will be sized at most
136.Fa buflen
137bytes.
138.\" XXX Not yet implemented:
139.\".It Dv MOUNTCTL_INSTALL_BLK_JOURNAL
140.\".It Dv MOUNTCTL_REMOVE_BLK_JOURNAL
141.\".It Dv MOUNTCTL_RESYNC_BLK_JOURNAL
142.\".It Dv MOUNTCTL_RESYNC_VFS_JOURNAL
143.\".It Dv MOUNTCTL_STATUS_BLK_JOURNAL
144.El
145.Sh RETURN VALUES
146Upon successful completion, the number
147of copied bytes is returned; otherwise
148the value -1 is returned and the
149global variable
150.Va errno
151is set to indicate the error.
152.Sh ERRORS
153The
154.Fn mountctl
155function will fail when one of the following occurs:
156.Bl -tag -width Er
157.It Bq Er EBADF
158.Fa \&Fd
159is not an active descriptor.
160.It Bq Er EINVAL
161The specified
162.Fa ctllen
163is not 0-1024,
164.Fa buflen
165is not 0-16384, or
166.Fa path
167is
168.Dv NULL .
169.It Bq Er EPERM
170The caller is not the super-user.
171.El
172.Sh SEE ALSO
173.Xr mount 2 ,
174.Xr mountctl 8
175.Sh HISTORY
176The
177.Fn mountctl
178system call first appeared in
179.Dx 1.1 .
180.Sh AUTHORS
181.An -nosplit
182The
183.Fn mountctl
184system call was written by
185.An Matthew Dillon
186and this manual page was written by
187.An Sascha Wildner .
188