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