1 .\" $NetBSD: refuse.3,v 1.7 2007/11/08 17:08:46 pooka Exp $
3 .\" Copyright © 2007 Alistair Crooks. All rights reserved.
5 .\" Redistribution and use in source and binary forms, with or without
6 .\" modification, are permitted provided that the following conditions
8 .\" 1. Redistributions of source code must retain the above copyright
9 .\" notice, this list of conditions and the following disclaimer.
10 .\" 2. Redistributions in binary form must reproduce the above copyright
11 .\" notice, this list of conditions and the following disclaimer in the
12 .\" documentation and/or other materials provided with the distribution.
13 .\" 3. The name of the author may not be used to endorse or promote
14 .\" products derived from this software without specific prior written
17 .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
18 .\" OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 .\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
21 .\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
23 .\" GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 .\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25 .\" WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
26 .\" NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27 .\" SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 .Nd Re-implementation of a file system in userspace system
41 .Fa "int argc" "char **argv" "const struct fuse_operations *"
45 .Fa "struct fuse_args *args" "const char *arg"
49 .Fa "struct fuse_args *args" "void *userdata"
50 .Fa "const struct fuse_opt *descriptions" "fuse_opt_proc_t processingfunc"
54 .Fa "struct fuse *fuse" "char *mountpoint"
58 .Fa "int argc" "char **argv" "const struct fuse_operations *ops"
59 .Fa "size_t opssize" "char **mountpoint" "int *multithreaded" "int *fd"
62 .Fo puffs_fuse_node_getattr
63 .Fa "const char *path" "struct stat *attrs"
66 .Fo puffs_fuse_node_readlink
67 .Fa "const char *path" "char *output" "size_t outlen"
70 .Fo puffs_fuse_node_mknod
71 .Fa "const char *path" "mode_t permissions" "dev_t devicenumber"
74 .Fo puffs_fuse_node_mkdir
75 .Fa "const char *path" "mode_t permissions"
79 .Fa "const char *path"
82 .Fo puffs_fuse_node_rmdir
83 .Fa "const char *path"
86 .Fo puffs_fuse_node_symlink
87 .Fa "const char *path" "const char *target"
90 .Fo puffs_fuse_node_rename
91 .Fa "const char *from" "const char *to"
94 .Fo puffs_fuse_node_link
95 .Fa "const char *from" "const char *to"
98 .Fo puffs_fuse_node_chmod
99 .Fa "const char *path" "mode_t permissions"
102 .Fo puffs_fuse_node_own
103 .Fa "const char *path" "uid_t owner" "gid_t group"
106 .Fo puffs_fuse_node_truncate
107 .Fa "const char *path" "off_t newsize"
110 .Fo puffs_fuse_node_utime
111 .Fa "const char *path" "struct utimbuf *newtimes"
114 .Fo puffs_fuse_node_open
115 .Fa "const char *path" "struct fuse_file_info *fileinfo"
118 .Fo puffs_fuse_node_read
119 .Fa "const char *path" "char *buffer" "size_t bufferlen" "off_t startoffset"
120 .Fa "struct fuse_file_info *fileinfo"
123 .Fo puffs_fuse_node_write
124 .Fa "const char *path" "char *buffer" "size_t bufferlen" "off_t startoffset"
125 .Fa "struct fuse_file_info *fileinfo"
128 .Fo puffs_fuse_fs_statfs
129 .Fa "const char *path" "struct statvfs *vfsinfo"
132 .Fo puffs_fuse_node_flush
133 .Fa "const char *path" "struct fuse_file_info *fileinfo"
136 .Fo puffs_fuse_node_fsync
137 .Fa "const char *path" "int flags" "struct fuse_file_info *fileinfo"
140 .Fo puffs_fuse_node_setxattr
141 .Fa "const char *path" "const char *attrname" "const char *attrvalue"
142 .Fa "size_t attrsize" "int flags"
145 .Fo puffs_fuse_node_getxattr
146 .Fa "const char *path" "const char *attrname" "const char *attrvalue"
147 .Fa "size_t attrvaluesize"
150 .Fo puffs_fuse_node_listxattr
151 .Fa "const char *path" "const char *attrname"
152 .Fa "size_t attrvaluesize"
155 .Fo puffs_fuse_node_removexattr
156 .Fa "const char *path" "const char *attrname"
159 .Fo puffs_fuse_node_opendir
160 .Fa "const char *path" "struct fuse_file_info *fileinfo"
163 .Fo puffs_fuse_node_readdir
164 .Fa "const char *path" "void *data" "fuse_fill_dir_t fillinfo"
165 .Fa "off_t offset" "struct fuse_file_info *fileinfo"
168 .Fo puffs_fuse_node_releasedir
169 .Fa "const char *path" "struct fuse_file_info *fileinfo"
172 .Fo puffs_fuse_node_fsyncdir
173 .Fa "const char *path" "int flags" "struct fuse_file_info *fileinfo"
176 .Fo puffs_fuse_fs_init
177 .Fa "struct fuse_conn_info *connectioninfo"
180 .Fo puffs_fuse_node_destroy
181 .Fa "void *connection"
184 .Fo puffs_fuse_node_access
185 .Fa "const char *path" "int accesstype"
188 .Fo puffs_fuse_node_create
189 .Fa "const char *path" "mode_t permissions" "struct fuse_file_info *fileinfo"
192 .Fo puffs_fuse_node_ftruncate
193 .Fa "const char *path" "off_t offset" "struct fuse_file_info *fileinfo"
196 .Fo puffs_fuse_node_fgetattr
197 .Fa "const char *path" "struct stat *attrs" "struct fuse_file_info *fileinfo"
200 .Fo puffs_fuse_node_lock
201 .Fa "const char *path" "struct fuse_file_info *fileinfo"
202 .Fa "int locktype" "struct flock *lockinfo"
205 .Fo puffs_fuse_node_utimens
206 .Fa "const char *path" "const struct timespec *newtimes"
209 .Fo puffs_fuse_node_bmap
210 .Fa "const char *path" "size_t mapsize" "uint64_t offset"
214 is a reimplementation of the file system in user space subsystem.
215 Operations are transported from the kernel virtual file system layer
216 to the concrete implementation behind
218 where they are processed and results are sent back to the kernel.
220 It uses the framework provided by the
222 subsystem, and, through that, the kernel interface provided by
232 .%T ReFUSE: Userspace FUSE Reimplementation Using puffs
235 An unsupported experimental version of
240 .An Alistair Crooks Aq agc@NetBSD.org ,
241 .An Antti Kantee Aq pooka@NetBSD.org
243 Many, legion, but well-loved.