xref: /minix3/lib/librefuse/refuse.3 (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
1*0a6a1f1dSLionel Sambuc.\"	$NetBSD: refuse.3,v 1.9 2014/03/18 18:20:38 riastradh Exp $
2490e0de5SThomas Veerman.\"
3490e0de5SThomas Veerman.\" Copyright � 2007 Alistair Crooks.  All rights reserved.
4490e0de5SThomas Veerman.\"
5490e0de5SThomas Veerman.\" Redistribution and use in source and binary forms, with or without
6490e0de5SThomas Veerman.\" modification, are permitted provided that the following conditions
7490e0de5SThomas Veerman.\" are met:
8490e0de5SThomas Veerman.\" 1. Redistributions of source code must retain the above copyright
9490e0de5SThomas Veerman.\"    notice, this list of conditions and the following disclaimer.
10490e0de5SThomas Veerman.\" 2. Redistributions in binary form must reproduce the above copyright
11490e0de5SThomas Veerman.\"    notice, this list of conditions and the following disclaimer in the
12490e0de5SThomas Veerman.\"    documentation and/or other materials provided with the distribution.
13490e0de5SThomas Veerman.\" 3. The name of the author may not be used to endorse or promote
14490e0de5SThomas Veerman.\"    products derived from this software without specific prior written
15490e0de5SThomas Veerman.\"    permission.
16490e0de5SThomas Veerman.\"
17490e0de5SThomas Veerman.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
18490e0de5SThomas Veerman.\" OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19490e0de5SThomas Veerman.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20490e0de5SThomas Veerman.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
21490e0de5SThomas Veerman.\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22490e0de5SThomas Veerman.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
23490e0de5SThomas Veerman.\" GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24490e0de5SThomas Veerman.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25490e0de5SThomas Veerman.\" WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
26490e0de5SThomas Veerman.\" NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27490e0de5SThomas Veerman.\" SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28490e0de5SThomas Veerman.\"
29490e0de5SThomas Veerman.Dd April 30, 2007
30490e0de5SThomas Veerman.Dt REFUSE 3
31490e0de5SThomas Veerman.Os
32490e0de5SThomas Veerman.Sh NAME
33490e0de5SThomas Veerman.Nm refuse
34490e0de5SThomas Veerman.Nd Re-implementation of a file system in userspace system
35490e0de5SThomas Veerman.Sh LIBRARY
36490e0de5SThomas Veerman.Lb librefuse
37490e0de5SThomas Veerman.Sh SYNOPSIS
38490e0de5SThomas Veerman.In fuse.h
39490e0de5SThomas Veerman.Ft int
40490e0de5SThomas Veerman.Fo fuse_main
41490e0de5SThomas Veerman.Fa "int argc" "char **argv" "const struct fuse_operations *"
42490e0de5SThomas Veerman.Fc
43490e0de5SThomas Veerman.Ft int
44490e0de5SThomas Veerman.Fo fuse_opt_add_arg
45490e0de5SThomas Veerman.Fa "struct fuse_args *args" "const char *arg"
46490e0de5SThomas Veerman.Fc
47490e0de5SThomas Veerman.Ft int
48490e0de5SThomas Veerman.Fo fuse_opt_parse
49490e0de5SThomas Veerman.Fa "struct fuse_args *args" "void *userdata"
50490e0de5SThomas Veerman.Fa "const struct fuse_opt *descriptions" "fuse_opt_proc_t processingfunc"
51490e0de5SThomas Veerman.Fc
52490e0de5SThomas Veerman.Ft int
53490e0de5SThomas Veerman.Fo fuse_teardown
54490e0de5SThomas Veerman.Fa "struct fuse *fuse" "char *mountpoint"
55490e0de5SThomas Veerman.Fc
56490e0de5SThomas Veerman.Ft struct fuse *
57490e0de5SThomas Veerman.Fo fuse_setup
58490e0de5SThomas Veerman.Fa "int argc" "char **argv" "const struct fuse_operations *ops"
59490e0de5SThomas Veerman.Fa "size_t opssize" "char **mountpoint" "int *multithreaded" "int *fd"
60490e0de5SThomas Veerman.Fc
61490e0de5SThomas Veerman.Ft int
62490e0de5SThomas Veerman.Fo puffs_fuse_node_getattr
63490e0de5SThomas Veerman.Fa "const char *path" "struct stat *attrs"
64490e0de5SThomas Veerman.Fc
65490e0de5SThomas Veerman.Ft int
66490e0de5SThomas Veerman.Fo puffs_fuse_node_readlink
67490e0de5SThomas Veerman.Fa "const char *path" "char *output" "size_t outlen"
68490e0de5SThomas Veerman.Fc
69490e0de5SThomas Veerman.Ft int
70490e0de5SThomas Veerman.Fo puffs_fuse_node_mknod
71490e0de5SThomas Veerman.Fa "const char *path" "mode_t permissions" "dev_t devicenumber"
72490e0de5SThomas Veerman.Fc
73490e0de5SThomas Veerman.Ft int
74490e0de5SThomas Veerman.Fo puffs_fuse_node_mkdir
75490e0de5SThomas Veerman.Fa "const char *path" "mode_t permissions"
76490e0de5SThomas Veerman.Fc
77490e0de5SThomas Veerman.Ft int
78490e0de5SThomas Veerman.Fo puffs_fuse_unlink
79490e0de5SThomas Veerman.Fa "const char *path"
80490e0de5SThomas Veerman.Fc
81490e0de5SThomas Veerman.Ft int
82490e0de5SThomas Veerman.Fo puffs_fuse_node_rmdir
83490e0de5SThomas Veerman.Fa "const char *path"
84490e0de5SThomas Veerman.Fc
85490e0de5SThomas Veerman.Ft int
86490e0de5SThomas Veerman.Fo puffs_fuse_node_symlink
87490e0de5SThomas Veerman.Fa "const char *path" "const char *target"
88490e0de5SThomas Veerman.Fc
89490e0de5SThomas Veerman.Ft int
90490e0de5SThomas Veerman.Fo puffs_fuse_node_rename
91490e0de5SThomas Veerman.Fa "const char *from" "const char *to"
92490e0de5SThomas Veerman.Fc
93490e0de5SThomas Veerman.Ft int
94490e0de5SThomas Veerman.Fo puffs_fuse_node_link
95490e0de5SThomas Veerman.Fa "const char *from" "const char *to"
96490e0de5SThomas Veerman.Fc
97490e0de5SThomas Veerman.Ft int
98490e0de5SThomas Veerman.Fo puffs_fuse_node_chmod
99490e0de5SThomas Veerman.Fa "const char *path" "mode_t permissions"
100490e0de5SThomas Veerman.Fc
101490e0de5SThomas Veerman.Ft int
102490e0de5SThomas Veerman.Fo puffs_fuse_node_own
103490e0de5SThomas Veerman.Fa "const char *path" "uid_t owner" "gid_t group"
104490e0de5SThomas Veerman.Fc
105490e0de5SThomas Veerman.Ft int
106490e0de5SThomas Veerman.Fo puffs_fuse_node_truncate
107490e0de5SThomas Veerman.Fa "const char *path" "off_t newsize"
108490e0de5SThomas Veerman.Fc
109490e0de5SThomas Veerman.Ft int
110490e0de5SThomas Veerman.Fo puffs_fuse_node_utime
111490e0de5SThomas Veerman.Fa "const char *path" "struct utimbuf *newtimes"
112490e0de5SThomas Veerman.Fc
113490e0de5SThomas Veerman.Ft int
114490e0de5SThomas Veerman.Fo puffs_fuse_node_open
115490e0de5SThomas Veerman.Fa "const char *path" "struct fuse_file_info *fileinfo"
116490e0de5SThomas Veerman.Fc
117490e0de5SThomas Veerman.Ft int
118490e0de5SThomas Veerman.Fo puffs_fuse_node_read
119490e0de5SThomas Veerman.Fa "const char *path" "char *buffer" "size_t bufferlen" "off_t startoffset"
120490e0de5SThomas Veerman.Fa "struct fuse_file_info *fileinfo"
121490e0de5SThomas Veerman.Fc
122490e0de5SThomas Veerman.Ft int
123490e0de5SThomas Veerman.Fo puffs_fuse_node_write
124490e0de5SThomas Veerman.Fa "const char *path" "char *buffer" "size_t bufferlen" "off_t startoffset"
125490e0de5SThomas Veerman.Fa "struct fuse_file_info *fileinfo"
126490e0de5SThomas Veerman.Fc
127490e0de5SThomas Veerman.Ft int
128490e0de5SThomas Veerman.Fo puffs_fuse_fs_statfs
129490e0de5SThomas Veerman.Fa "const char *path" "struct statvfs *vfsinfo"
130490e0de5SThomas Veerman.Fc
131490e0de5SThomas Veerman.Ft int
132490e0de5SThomas Veerman.Fo puffs_fuse_node_flush
133490e0de5SThomas Veerman.Fa "const char *path" "struct fuse_file_info *fileinfo"
134490e0de5SThomas Veerman.Fc
135490e0de5SThomas Veerman.Ft int
136490e0de5SThomas Veerman.Fo puffs_fuse_node_fsync
137490e0de5SThomas Veerman.Fa "const char *path" "int flags" "struct fuse_file_info *fileinfo"
138490e0de5SThomas Veerman.Fc
139490e0de5SThomas Veerman.Ft int
140490e0de5SThomas Veerman.Fo puffs_fuse_node_setxattr
141490e0de5SThomas Veerman.Fa "const char *path" "const char *attrname" "const char *attrvalue"
142490e0de5SThomas Veerman.Fa "size_t attrsize" "int flags"
143490e0de5SThomas Veerman.Fc
144490e0de5SThomas Veerman.Ft int
145490e0de5SThomas Veerman.Fo puffs_fuse_node_getxattr
146490e0de5SThomas Veerman.Fa "const char *path" "const char *attrname" "const char *attrvalue"
147490e0de5SThomas Veerman.Fa "size_t attrvaluesize"
148490e0de5SThomas Veerman.Fc
149490e0de5SThomas Veerman.Ft int
150490e0de5SThomas Veerman.Fo puffs_fuse_node_listxattr
151490e0de5SThomas Veerman.Fa "const char *path" "const char *attrname"
152490e0de5SThomas Veerman.Fa "size_t attrvaluesize"
153490e0de5SThomas Veerman.Fc
154490e0de5SThomas Veerman.Ft int
155490e0de5SThomas Veerman.Fo puffs_fuse_node_removexattr
156490e0de5SThomas Veerman.Fa "const char *path" "const char *attrname"
157490e0de5SThomas Veerman.Fc
158490e0de5SThomas Veerman.Ft int
159490e0de5SThomas Veerman.Fo puffs_fuse_node_opendir
160490e0de5SThomas Veerman.Fa "const char *path" "struct fuse_file_info *fileinfo"
161490e0de5SThomas Veerman.Fc
162490e0de5SThomas Veerman.Ft int
163490e0de5SThomas Veerman.Fo puffs_fuse_node_readdir
164490e0de5SThomas Veerman.Fa "const char *path" "void *data" "fuse_fill_dir_t fillinfo"
165490e0de5SThomas Veerman.Fa "off_t offset" "struct fuse_file_info *fileinfo"
166490e0de5SThomas Veerman.Fc
167490e0de5SThomas Veerman.Ft int
168490e0de5SThomas Veerman.Fo puffs_fuse_node_releasedir
169490e0de5SThomas Veerman.Fa "const char *path" "struct fuse_file_info *fileinfo"
170490e0de5SThomas Veerman.Fc
171490e0de5SThomas Veerman.Ft int
172490e0de5SThomas Veerman.Fo puffs_fuse_node_fsyncdir
173490e0de5SThomas Veerman.Fa "const char *path" "int flags" "struct fuse_file_info *fileinfo"
174490e0de5SThomas Veerman.Fc
175490e0de5SThomas Veerman.Ft void *
176490e0de5SThomas Veerman.Fo puffs_fuse_fs_init
177490e0de5SThomas Veerman.Fa "struct fuse_conn_info *connectioninfo"
178490e0de5SThomas Veerman.Fc
179490e0de5SThomas Veerman.Ft void
180490e0de5SThomas Veerman.Fo puffs_fuse_node_destroy
181490e0de5SThomas Veerman.Fa "void *connection"
182490e0de5SThomas Veerman.Fc
183490e0de5SThomas Veerman.Ft int
184490e0de5SThomas Veerman.Fo puffs_fuse_node_access
185490e0de5SThomas Veerman.Fa "const char *path" "int accesstype"
186490e0de5SThomas Veerman.Fc
187490e0de5SThomas Veerman.Ft int
188490e0de5SThomas Veerman.Fo puffs_fuse_node_create
189490e0de5SThomas Veerman.Fa "const char *path" "mode_t permissions" "struct fuse_file_info *fileinfo"
190490e0de5SThomas Veerman.Fc
191490e0de5SThomas Veerman.Ft int
192490e0de5SThomas Veerman.Fo puffs_fuse_node_ftruncate
193490e0de5SThomas Veerman.Fa "const char *path" "off_t offset" "struct fuse_file_info *fileinfo"
194490e0de5SThomas Veerman.Fc
195490e0de5SThomas Veerman.Ft int
196490e0de5SThomas Veerman.Fo puffs_fuse_node_fgetattr
197490e0de5SThomas Veerman.Fa "const char *path" "struct stat *attrs" "struct fuse_file_info *fileinfo"
198490e0de5SThomas Veerman.Fc
199490e0de5SThomas Veerman.Ft int
200490e0de5SThomas Veerman.Fo puffs_fuse_node_lock
201490e0de5SThomas Veerman.Fa "const char *path" "struct fuse_file_info *fileinfo"
202490e0de5SThomas Veerman.Fa "int locktype" "struct flock *lockinfo"
203490e0de5SThomas Veerman.Fc
204490e0de5SThomas Veerman.Ft int
205490e0de5SThomas Veerman.Fo puffs_fuse_node_utimens
206490e0de5SThomas Veerman.Fa "const char *path" "const struct timespec *newtimes"
207490e0de5SThomas Veerman.Fc
208490e0de5SThomas Veerman.Ft int
209490e0de5SThomas Veerman.Fo puffs_fuse_node_bmap
210490e0de5SThomas Veerman.Fa "const char *path" "size_t mapsize" "uint64_t offset"
211490e0de5SThomas Veerman.Fc
212490e0de5SThomas Veerman.Sh DESCRIPTION
213490e0de5SThomas Veerman.Nm
214490e0de5SThomas Veermanis a reimplementation of the file system in user space subsystem.
215490e0de5SThomas VeermanOperations are transported from the kernel virtual file system layer
216490e0de5SThomas Veermanto the concrete implementation behind
217490e0de5SThomas Veerman.Nm ,
218490e0de5SThomas Veermanwhere they are processed and results are sent back to the kernel.
219490e0de5SThomas Veerman.Pp
220490e0de5SThomas VeermanIt uses the framework provided by the
221490e0de5SThomas Veerman.Xr puffs 3
222490e0de5SThomas Veermansubsystem, and, through that, the kernel interface provided by
223490e0de5SThomas Veerman.Xr puffs 4 .
224490e0de5SThomas Veerman.Sh SEE ALSO
225490e0de5SThomas Veerman.Xr puffs 3 ,
226490e0de5SThomas Veerman.Xr puffs 4
227490e0de5SThomas Veerman.Rs
228490e0de5SThomas Veerman.%A Antti Kantee
229490e0de5SThomas Veerman.%A Alistair Crooks
230490e0de5SThomas Veerman.%D September 2007
231490e0de5SThomas Veerman.%J EuroBSDCon 2007
232490e0de5SThomas Veerman.%T ReFUSE: Userspace FUSE Reimplementation Using puffs
233490e0de5SThomas Veerman.Re
234490e0de5SThomas Veerman.Sh HISTORY
235490e0de5SThomas VeermanAn unsupported experimental version of
236490e0de5SThomas Veerman.Nm
237490e0de5SThomas Veermanfirst appeared in
238490e0de5SThomas Veerman.Nx 5.0 .
239490e0de5SThomas Veerman.Sh AUTHORS
24084d9c625SLionel Sambuc.An Alistair Crooks Aq Mt agc@NetBSD.org ,
24184d9c625SLionel Sambuc.An Antti Kantee Aq Mt pooka@NetBSD.org
242490e0de5SThomas Veerman.Sh BUGS
243490e0de5SThomas VeermanMany, legion, but well-loved.
244