libfuse
fuse_lowlevel.h
Go to the documentation of this file.
1/*
2 FUSE: Filesystem in Userspace
3 Copyright (C) 2001-2007 Miklos Szeredi <miklos@szeredi.hu>
4
5 This program can be distributed under the terms of the GNU LGPLv2.
6 See the file COPYING.LIB.
7*/
8
9#ifndef FUSE_LOWLEVEL_H_
10#define FUSE_LOWLEVEL_H_
11
21#ifndef FUSE_USE_VERSION
22#error FUSE_USE_VERSION not defined
23#endif
24
25#include "fuse_common.h"
26
27#include <utime.h>
28#include <fcntl.h>
29#include <sys/types.h>
30#include <sys/stat.h>
31#include <sys/statvfs.h>
32#include <sys/uio.h>
33
34#ifdef __cplusplus
35extern "C" {
36#endif
37
38/* ----------------------------------------------------------- *
39 * Miscellaneous definitions *
40 * ----------------------------------------------------------- */
41
43#define FUSE_ROOT_ID 1
44
46typedef uint64_t fuse_ino_t;
47
49typedef struct fuse_req *fuse_req_t;
50
56struct fuse_session;
57
68
79 uint64_t generation;
80
88 struct stat attr;
89
95
101};
102
111struct fuse_ctx {
113 uid_t uid;
114
116 gid_t gid;
117
119 pid_t pid;
120
122 mode_t umask;
123};
124
125struct fuse_forget_data {
126 fuse_ino_t ino;
127 uint64_t nlookup;
128};
129
130struct fuse_custom_io {
131 ssize_t (*writev)(int fd, struct iovec *iov, int count, void *userdata);
132 ssize_t (*read)(int fd, void *buf, size_t buf_len, void *userdata);
133 ssize_t (*splice_receive)(int fdin, off_t *offin, int fdout,
134 off_t *offout, size_t len,
135 unsigned int flags, void *userdata);
136 ssize_t (*splice_send)(int fdin, off_t *offin, int fdout,
137 off_t *offout, size_t len,
138 unsigned int flags, void *userdata);
139};
140
147 FUSE_LL_INVALIDATE = 0,
148 FUSE_LL_EXPIRE_ONLY = (1 << 0),
149};
150
151/* 'to_set' flags in setattr */
152#define FUSE_SET_ATTR_MODE (1 << 0)
153#define FUSE_SET_ATTR_UID (1 << 1)
154#define FUSE_SET_ATTR_GID (1 << 2)
155#define FUSE_SET_ATTR_SIZE (1 << 3)
156#define FUSE_SET_ATTR_ATIME (1 << 4)
157#define FUSE_SET_ATTR_MTIME (1 << 5)
158#define FUSE_SET_ATTR_ATIME_NOW (1 << 7)
159#define FUSE_SET_ATTR_MTIME_NOW (1 << 8)
160#define FUSE_SET_ATTR_FORCE (1 << 9)
161#define FUSE_SET_ATTR_CTIME (1 << 10)
162#define FUSE_SET_ATTR_KILL_SUID (1 << 11)
163#define FUSE_SET_ATTR_KILL_SGID (1 << 12)
164#define FUSE_SET_ATTR_FILE (1 << 13)
165#define FUSE_SET_ATTR_KILL_PRIV (1 << 14)
166#define FUSE_SET_ATTR_OPEN (1 << 15)
167#define FUSE_SET_ATTR_TIMES_SET (1 << 16)
168#define FUSE_SET_ATTR_TOUCH (1 << 17)
169
170/* ----------------------------------------------------------- *
171 * Request methods and replies *
172 * ----------------------------------------------------------- */
173
218 void (*init) (void *userdata, struct fuse_conn_info *conn);
219
231 void (*destroy) (void *userdata);
232
244 void (*lookup) (fuse_req_t req, fuse_ino_t parent, const char *name);
245
282 void (*forget) (fuse_req_t req, fuse_ino_t ino, uint64_t nlookup);
283
303 void (*getattr) (fuse_req_t req, fuse_ino_t ino,
304 struct fuse_file_info *fi);
305
340 void (*setattr) (fuse_req_t req, fuse_ino_t ino, struct stat *attr,
341 int to_set, struct fuse_file_info *fi);
342
353 void (*readlink) (fuse_req_t req, fuse_ino_t ino);
354
371 void (*mknod) (fuse_req_t req, fuse_ino_t parent, const char *name,
372 mode_t mode, dev_t rdev);
373
386 void (*mkdir) (fuse_req_t req, fuse_ino_t parent, const char *name,
387 mode_t mode);
388
404 void (*unlink) (fuse_req_t req, fuse_ino_t parent, const char *name);
405
421 void (*rmdir) (fuse_req_t req, fuse_ino_t parent, const char *name);
422
435 void (*symlink) (fuse_req_t req, const char *link, fuse_ino_t parent,
436 const char *name);
437
467 void (*rename) (fuse_req_t req, fuse_ino_t parent, const char *name,
468 fuse_ino_t newparent, const char *newname,
469 unsigned int flags);
470
483 void (*link) (fuse_req_t req, fuse_ino_t ino, fuse_ino_t newparent,
484 const char *newname);
485
542 void (*open) (fuse_req_t req, fuse_ino_t ino,
543 struct fuse_file_info *fi);
544
570 void (*read) (fuse_req_t req, fuse_ino_t ino, size_t size, off_t off,
571 struct fuse_file_info *fi);
572
599 void (*write) (fuse_req_t req, fuse_ino_t ino, const char *buf,
600 size_t size, off_t off, struct fuse_file_info *fi);
601
640 void (*flush) (fuse_req_t req, fuse_ino_t ino,
641 struct fuse_file_info *fi);
642
668 void (*release) (fuse_req_t req, fuse_ino_t ino,
669 struct fuse_file_info *fi);
670
690 void (*fsync) (fuse_req_t req, fuse_ino_t ino, int datasync,
691 struct fuse_file_info *fi);
692
715 void (*opendir) (fuse_req_t req, fuse_ino_t ino,
716 struct fuse_file_info *fi);
717
761 void (*readdir) (fuse_req_t req, fuse_ino_t ino, size_t size, off_t off,
762 struct fuse_file_info *fi);
763
781 struct fuse_file_info *fi);
782
805 void (*fsyncdir) (fuse_req_t req, fuse_ino_t ino, int datasync,
806 struct fuse_file_info *fi);
807
818 void (*statfs) (fuse_req_t req, fuse_ino_t ino);
819
831 void (*setxattr) (fuse_req_t req, fuse_ino_t ino, const char *name,
832 const char *value, size_t size, int flags);
833
862 void (*getxattr) (fuse_req_t req, fuse_ino_t ino, const char *name,
863 size_t size);
864
893 void (*listxattr) (fuse_req_t req, fuse_ino_t ino, size_t size);
894
910 void (*removexattr) (fuse_req_t req, fuse_ino_t ino, const char *name);
911
932 void (*access) (fuse_req_t req, fuse_ino_t ino, int mask);
933
961 void (*create) (fuse_req_t req, fuse_ino_t parent, const char *name,
962 mode_t mode, struct fuse_file_info *fi);
963
976 void (*getlk) (fuse_req_t req, fuse_ino_t ino,
977 struct fuse_file_info *fi, struct flock *lock);
978
1001 void (*setlk) (fuse_req_t req, fuse_ino_t ino,
1002 struct fuse_file_info *fi,
1003 struct flock *lock, int sleep);
1004
1025 void (*bmap) (fuse_req_t req, fuse_ino_t ino, size_t blocksize,
1026 uint64_t idx);
1027
1028#if FUSE_USE_VERSION < 35
1029 void (*ioctl) (fuse_req_t req, fuse_ino_t ino, int cmd,
1030 void *arg, struct fuse_file_info *fi, unsigned flags,
1031 const void *in_buf, size_t in_bufsz, size_t out_bufsz);
1032#else
1061 void (*ioctl) (fuse_req_t req, fuse_ino_t ino, unsigned int cmd,
1062 void *arg, struct fuse_file_info *fi, unsigned flags,
1063 const void *in_buf, size_t in_bufsz, size_t out_bufsz);
1064#endif
1065
1095 void (*poll) (fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi,
1096 struct fuse_pollhandle *ph);
1097
1126 struct fuse_bufvec *bufv, off_t off,
1127 struct fuse_file_info *fi);
1128
1141 void (*retrieve_reply) (fuse_req_t req, void *cookie, fuse_ino_t ino,
1142 off_t offset, struct fuse_bufvec *bufv);
1143
1155 void (*forget_multi) (fuse_req_t req, size_t count,
1156 struct fuse_forget_data *forgets);
1157
1173 void (*flock) (fuse_req_t req, fuse_ino_t ino,
1174 struct fuse_file_info *fi, int op);
1175
1196 void (*fallocate) (fuse_req_t req, fuse_ino_t ino, int mode,
1197 off_t offset, off_t length, struct fuse_file_info *fi);
1198
1224 void (*readdirplus) (fuse_req_t req, fuse_ino_t ino, size_t size, off_t off,
1225 struct fuse_file_info *fi);
1226
1258 off_t off_in, struct fuse_file_info *fi_in,
1259 fuse_ino_t ino_out, off_t off_out,
1260 struct fuse_file_info *fi_out, size_t len,
1261 int flags);
1262
1281 void (*lseek) (fuse_req_t req, fuse_ino_t ino, off_t off, int whence,
1282 struct fuse_file_info *fi);
1283};
1284
1306int fuse_reply_err(fuse_req_t req, int err);
1307
1318void fuse_reply_none(fuse_req_t req);
1319
1333int fuse_reply_entry(fuse_req_t req, const struct fuse_entry_param *e);
1334
1352int fuse_reply_create(fuse_req_t req, const struct fuse_entry_param *e,
1353 const struct fuse_file_info *fi);
1354
1366int fuse_reply_attr(fuse_req_t req, const struct stat *attr,
1367 double attr_timeout);
1368
1379int fuse_reply_readlink(fuse_req_t req, const char *link);
1380
1394int fuse_reply_open(fuse_req_t req, const struct fuse_file_info *fi);
1395
1406int fuse_reply_write(fuse_req_t req, size_t count);
1407
1419int fuse_reply_buf(fuse_req_t req, const char *buf, size_t size);
1420
1464int fuse_reply_data(fuse_req_t req, struct fuse_bufvec *bufv,
1466
1478int fuse_reply_iov(fuse_req_t req, const struct iovec *iov, int count);
1479
1490int fuse_reply_statfs(fuse_req_t req, const struct statvfs *stbuf);
1491
1502int fuse_reply_xattr(fuse_req_t req, size_t count);
1503
1514int fuse_reply_lock(fuse_req_t req, const struct flock *lock);
1515
1526int fuse_reply_bmap(fuse_req_t req, uint64_t idx);
1527
1528/* ----------------------------------------------------------- *
1529 * Filling a buffer in readdir *
1530 * ----------------------------------------------------------- */
1531
1559size_t fuse_add_direntry(fuse_req_t req, char *buf, size_t bufsize,
1560 const char *name, const struct stat *stbuf,
1561 off_t off);
1562
1576size_t fuse_add_direntry_plus(fuse_req_t req, char *buf, size_t bufsize,
1577 const char *name,
1578 const struct fuse_entry_param *e, off_t off);
1579
1596 const struct iovec *in_iov, size_t in_count,
1597 const struct iovec *out_iov, size_t out_count);
1598
1610int fuse_reply_ioctl(fuse_req_t req, int result, const void *buf, size_t size);
1611
1623int fuse_reply_ioctl_iov(fuse_req_t req, int result, const struct iovec *iov,
1624 int count);
1625
1632int fuse_reply_poll(fuse_req_t req, unsigned revents);
1633
1644int fuse_reply_lseek(fuse_req_t req, off_t off);
1645
1646/* ----------------------------------------------------------- *
1647 * Notification *
1648 * ----------------------------------------------------------- */
1649
1657int fuse_lowlevel_notify_poll(struct fuse_pollhandle *ph);
1658
1682int fuse_lowlevel_notify_inval_inode(struct fuse_session *se, fuse_ino_t ino,
1683 off_t off, off_t len);
1684
1709int fuse_lowlevel_notify_inval_entry(struct fuse_session *se, fuse_ino_t parent,
1710 const char *name, size_t namelen);
1711
1740int fuse_lowlevel_notify_expire_entry(struct fuse_session *se, fuse_ino_t parent,
1741 const char *name, size_t namelen);
1742
1771int fuse_lowlevel_notify_delete(struct fuse_session *se,
1772 fuse_ino_t parent, fuse_ino_t child,
1773 const char *name, size_t namelen);
1774
1800int fuse_lowlevel_notify_store(struct fuse_session *se, fuse_ino_t ino,
1801 off_t offset, struct fuse_bufvec *bufv,
1832int fuse_lowlevel_notify_retrieve(struct fuse_session *se, fuse_ino_t ino,
1833 size_t size, off_t offset, void *cookie);
1834
1835
1836/* ----------------------------------------------------------- *
1837 * Utility functions *
1838 * ----------------------------------------------------------- */
1839
1846void *fuse_req_userdata(fuse_req_t req);
1847
1857const struct fuse_ctx *fuse_req_ctx(fuse_req_t req);
1858
1878int fuse_req_getgroups(fuse_req_t req, int size, gid_t list[]);
1879
1886typedef void (*fuse_interrupt_func_t)(fuse_req_t req, void *data);
1887
1900 void *data);
1901
1909
1910
1911/* ----------------------------------------------------------- *
1912 * Inquiry functions *
1913 * ----------------------------------------------------------- */
1914
1918void fuse_lowlevel_version(void);
1919
1925void fuse_lowlevel_help(void);
1926
1930void fuse_cmdline_help(void);
1931
1932/* ----------------------------------------------------------- *
1933 * Filesystem setup & teardown *
1934 * ----------------------------------------------------------- */
1935
1942 int singlethread;
1943 int foreground;
1944 int debug;
1945 int nodefault_subtype;
1946 char *mountpoint;
1947 int show_version;
1948 int show_help;
1949 int clone_fd;
1950 unsigned int max_idle_threads; /* discouraged, due to thread
1951 * destruct overhead */
1952
1953 /* Added in libfuse-3.12 */
1954 unsigned int max_threads;
1955};
1956
1975#if (defined(LIBFUSE_BUILT_WITH_VERSIONED_SYMBOLS))
1976int fuse_parse_cmdline(struct fuse_args *args,
1977 struct fuse_cmdline_opts *opts);
1978#else
1979#if FUSE_USE_VERSION < FUSE_MAKE_VERSION(3, 12)
1980int fuse_parse_cmdline_30(struct fuse_args *args,
1981 struct fuse_cmdline_opts *opts);
1982#define fuse_parse_cmdline(args, opts) fuse_parse_cmdline_30(args, opts)
1983#else
1984int fuse_parse_cmdline_312(struct fuse_args *args,
1985 struct fuse_cmdline_opts *opts);
1986#define fuse_parse_cmdline(args, opts) fuse_parse_cmdline_312(args, opts)
1987#endif
1988#endif
1989
2018struct fuse_session *fuse_session_new(struct fuse_args *args,
2019 const struct fuse_lowlevel_ops *op,
2020 size_t op_size, void *userdata);
2021
2049int fuse_session_custom_io(struct fuse_session *se,
2050 const struct fuse_custom_io *io, int fd);
2051
2060int fuse_session_mount(struct fuse_session *se, const char *mountpoint);
2061
2084int fuse_session_loop(struct fuse_session *se);
2085
2086#if FUSE_USE_VERSION < 32
2087 int fuse_session_loop_mt_31(struct fuse_session *se, int clone_fd);
2088 #define fuse_session_loop_mt(se, clone_fd) fuse_session_loop_mt_31(se, clone_fd)
2089#elif FUSE_USE_VERSION < FUSE_MAKE_VERSION(3, 12)
2090 int fuse_session_loop_mt_32(struct fuse_session *se, struct fuse_loop_config *config);
2091 #define fuse_session_loop_mt(se, config) fuse_session_loop_mt_32(se, config)
2092#else
2093 #if (defined(LIBFUSE_BUILT_WITH_VERSIONED_SYMBOLS))
2105 int fuse_session_loop_mt(struct fuse_session *se, struct fuse_loop_config *config);
2106 #else
2107 int fuse_session_loop_mt_312(struct fuse_session *se, struct fuse_loop_config *config);
2108 #define fuse_session_loop_mt(se, config) fuse_session_loop_mt_312(se, config)
2109 #endif
2110#endif
2111
2124void fuse_session_exit(struct fuse_session *se);
2125
2131void fuse_session_reset(struct fuse_session *se);
2132
2139int fuse_session_exited(struct fuse_session *se);
2140
2165void fuse_session_unmount(struct fuse_session *se);
2166
2172void fuse_session_destroy(struct fuse_session *se);
2173
2174/* ----------------------------------------------------------- *
2175 * Custom event loop support *
2176 * ----------------------------------------------------------- */
2177
2192int fuse_session_fd(struct fuse_session *se);
2193
2202void fuse_session_process_buf(struct fuse_session *se,
2203 const struct fuse_buf *buf);
2204
2216int fuse_session_receive_buf(struct fuse_session *se, struct fuse_buf *buf);
2217
2218#ifdef __cplusplus
2219}
2220#endif
2221
2222#endif /* FUSE_LOWLEVEL_H_ */
fuse_buf_copy_flags
Definition: fuse_common.h:703
void fuse_session_destroy(struct fuse_session *se)
fuse_notify_entry_flags
int fuse_reply_data(fuse_req_t req, struct fuse_bufvec *bufv, enum fuse_buf_copy_flags flags)
int fuse_reply_lock(fuse_req_t req, const struct flock *lock)
int fuse_reply_open(fuse_req_t req, const struct fuse_file_info *fi)
void fuse_session_exit(struct fuse_session *se)
void(* fuse_interrupt_func_t)(fuse_req_t req, void *data)
int fuse_reply_poll(fuse_req_t req, unsigned revents)
int fuse_reply_err(fuse_req_t req, int err)
const struct fuse_ctx * fuse_req_ctx(fuse_req_t req)
void * fuse_req_userdata(fuse_req_t req)
int fuse_reply_buf(fuse_req_t req, const char *buf, size_t size)
struct fuse_req * fuse_req_t
Definition: fuse_lowlevel.h:49
size_t fuse_add_direntry_plus(fuse_req_t req, char *buf, size_t bufsize, const char *name, const struct fuse_entry_param *e, off_t off)
int fuse_reply_ioctl_iov(fuse_req_t req, int result, const struct iovec *iov, int count)
int fuse_lowlevel_notify_delete(struct fuse_session *se, fuse_ino_t parent, fuse_ino_t child, const char *name, size_t namelen)
void fuse_session_process_buf(struct fuse_session *se, const struct fuse_buf *buf)
int fuse_session_exited(struct fuse_session *se)
int fuse_session_fd(struct fuse_session *se)
int fuse_req_interrupted(fuse_req_t req)
int fuse_req_getgroups(fuse_req_t req, int size, gid_t list[])
int fuse_lowlevel_notify_retrieve(struct fuse_session *se, fuse_ino_t ino, size_t size, off_t offset, void *cookie)
int fuse_reply_readlink(fuse_req_t req, const char *link)
int fuse_session_loop(struct fuse_session *se)
Definition: fuse_loop.c:19
int fuse_reply_iov(fuse_req_t req, const struct iovec *iov, int count)
int fuse_reply_bmap(fuse_req_t req, uint64_t idx)
int fuse_reply_entry(fuse_req_t req, const struct fuse_entry_param *e)
void fuse_session_unmount(struct fuse_session *se)
void fuse_cmdline_help(void)
Definition: helper.c:130
struct fuse_session * fuse_session_new(struct fuse_args *args, const struct fuse_lowlevel_ops *op, size_t op_size, void *userdata)
void fuse_reply_none(fuse_req_t req)
int fuse_lowlevel_notify_expire_entry(struct fuse_session *se, fuse_ino_t parent, const char *name, size_t namelen)
int fuse_reply_ioctl_retry(fuse_req_t req, const struct iovec *in_iov, size_t in_count, const struct iovec *out_iov, size_t out_count)
void fuse_lowlevel_help(void)
int fuse_lowlevel_notify_inval_inode(struct fuse_session *se, fuse_ino_t ino, off_t off, off_t len)
int fuse_reply_statfs(fuse_req_t req, const struct statvfs *stbuf)
int fuse_reply_write(fuse_req_t req, size_t count)
int fuse_session_receive_buf(struct fuse_session *se, struct fuse_buf *buf)
int fuse_session_mount(struct fuse_session *se, const char *mountpoint)
int fuse_parse_cmdline_30(struct fuse_args *args, struct fuse_cmdline_opts *opts)
Definition: helper.c:237
int fuse_lowlevel_notify_poll(struct fuse_pollhandle *ph)
int fuse_lowlevel_notify_inval_entry(struct fuse_session *se, fuse_ino_t parent, const char *name, size_t namelen)
void fuse_req_interrupt_func(fuse_req_t req, fuse_interrupt_func_t func, void *data)
void fuse_session_reset(struct fuse_session *se)
int fuse_session_custom_io(struct fuse_session *se, const struct fuse_custom_io *io, int fd)
int fuse_reply_create(fuse_req_t req, const struct fuse_entry_param *e, const struct fuse_file_info *fi)
int fuse_reply_lseek(fuse_req_t req, off_t off)
void fuse_lowlevel_version(void)
uint64_t fuse_ino_t
Definition: fuse_lowlevel.h:46
size_t fuse_add_direntry(fuse_req_t req, char *buf, size_t bufsize, const char *name, const struct stat *stbuf, off_t off)
int fuse_reply_attr(fuse_req_t req, const struct stat *attr, double attr_timeout)
int fuse_reply_ioctl(fuse_req_t req, int result, const void *buf, size_t size)
int fuse_lowlevel_notify_store(struct fuse_session *se, fuse_ino_t ino, off_t offset, struct fuse_bufvec *bufv, enum fuse_buf_copy_flags flags)
int fuse_reply_xattr(fuse_req_t req, size_t count)
size_t off
Definition: fuse_common.h:803
size_t count
Definition: fuse_common.h:793
mode_t umask
Definition: fuse_lowlevel.h:59
double entry_timeout
fuse_ino_t ino
Definition: fuse_lowlevel.h:67
uint64_t generation
Definition: fuse_lowlevel.h:79
double attr_timeout
Definition: fuse_lowlevel.h:94
struct stat attr
Definition: fuse_lowlevel.h:88
void(* fsync)(fuse_req_t req, fuse_ino_t ino, int datasync, struct fuse_file_info *fi)
void(* bmap)(fuse_req_t req, fuse_ino_t ino, size_t blocksize, uint64_t idx)
void(* unlink)(fuse_req_t req, fuse_ino_t parent, const char *name)
void(* getxattr)(fuse_req_t req, fuse_ino_t ino, const char *name, size_t size)
void(* rename)(fuse_req_t req, fuse_ino_t parent, const char *name, fuse_ino_t newparent, const char *newname, unsigned int flags)
void(* releasedir)(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi)
void(* setxattr)(fuse_req_t req, fuse_ino_t ino, const char *name, const char *value, size_t size, int flags)
void(* write_buf)(fuse_req_t req, fuse_ino_t ino, struct fuse_bufvec *bufv, off_t off, struct fuse_file_info *fi)
void(* symlink)(fuse_req_t req, const char *link, fuse_ino_t parent, const char *name)
void(* statfs)(fuse_req_t req, fuse_ino_t ino)
void(* release)(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi)
void(* readdir)(fuse_req_t req, fuse_ino_t ino, size_t size, off_t off, struct fuse_file_info *fi)
void(* fallocate)(fuse_req_t req, fuse_ino_t ino, int mode, off_t offset, off_t length, struct fuse_file_info *fi)
void(* create)(fuse_req_t req, fuse_ino_t parent, const char *name, mode_t mode, struct fuse_file_info *fi)
void(* link)(fuse_req_t req, fuse_ino_t ino, fuse_ino_t newparent, const char *newname)
void(* write)(fuse_req_t req, fuse_ino_t ino, const char *buf, size_t size, off_t off, struct fuse_file_info *fi)
void(* lookup)(fuse_req_t req, fuse_ino_t parent, const char *name)
void(* readdirplus)(fuse_req_t req, fuse_ino_t ino, size_t size, off_t off, struct fuse_file_info *fi)
void(* flock)(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi, int op)
void(* getattr)(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi)
void(* copy_file_range)(fuse_req_t req, fuse_ino_t ino_in, off_t off_in, struct fuse_file_info *fi_in, fuse_ino_t ino_out, off_t off_out, struct fuse_file_info *fi_out, size_t len, int flags)
void(* setattr)(fuse_req_t req, fuse_ino_t ino, struct stat *attr, int to_set, struct fuse_file_info *fi)
void(* open)(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi)
void(* removexattr)(fuse_req_t req, fuse_ino_t ino, const char *name)
void(* forget)(fuse_req_t req, fuse_ino_t ino, uint64_t nlookup)
void(* poll)(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi, struct fuse_pollhandle *ph)
void(* ioctl)(fuse_req_t req, fuse_ino_t ino, unsigned int cmd, void *arg, struct fuse_file_info *fi, unsigned flags, const void *in_buf, size_t in_bufsz, size_t out_bufsz)
void(* rmdir)(fuse_req_t req, fuse_ino_t parent, const char *name)
void(* init)(void *userdata, struct fuse_conn_info *conn)
void(* setlk)(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi, struct flock *lock, int sleep)
void(* retrieve_reply)(fuse_req_t req, void *cookie, fuse_ino_t ino, off_t offset, struct fuse_bufvec *bufv)
void(* fsyncdir)(fuse_req_t req, fuse_ino_t ino, int datasync, struct fuse_file_info *fi)
void(* destroy)(void *userdata)
void(* mkdir)(fuse_req_t req, fuse_ino_t parent, const char *name, mode_t mode)
void(* access)(fuse_req_t req, fuse_ino_t ino, int mask)
void(* mknod)(fuse_req_t req, fuse_ino_t parent, const char *name, mode_t mode, dev_t rdev)
void(* lseek)(fuse_req_t req, fuse_ino_t ino, off_t off, int whence, struct fuse_file_info *fi)
void(* getlk)(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi, struct flock *lock)
void(* readlink)(fuse_req_t req, fuse_ino_t ino)
void(* read)(fuse_req_t req, fuse_ino_t ino, size_t size, off_t off, struct fuse_file_info *fi)
void(* flush)(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi)
void(* listxattr)(fuse_req_t req, fuse_ino_t ino, size_t size)
void(* opendir)(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi)
void(* forget_multi)(fuse_req_t req, size_t count, struct fuse_forget_data *forgets)