libfuse: include/fuse_lowlevel.h Source File

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 LGPL2.txt.
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 <stddef.h>
28#include <utime.h>
29#include <fcntl.h>
30#include <sys/types.h>
31#include <sys/stat.h>
32#include <sys/statvfs.h>
33#include <sys/uio.h>
34
35#ifdef __cplusplus
36extern "C" {
37#endif
38
39/* ----------------------------------------------------------- *
40 * Miscellaneous definitions *
41 * ----------------------------------------------------------- */
42
44#define FUSE_ROOT_ID 1
45
47 typedef uint64_t fuse_ino_t;
48
50 typedef struct fuse_req *fuse_req_t;
51
52/* Forward declaration */
53struct statx;
54
60struct fuse_session;
61
63struct fuse_entry_param {
71 fuse_ino_t ino;
72
83 uint64_t generation;
84
92 struct stat attr;
93
98 double attr_timeout;
99
104 double entry_timeout;
105};
106
115struct fuse_ctx {
117 uid_t uid;
118
120 gid_t gid;
121
123 pid_t pid;
124
126 mode_t umask;
127};
128
129struct fuse_forget_data {
130 fuse_ino_t ino;
131 uint64_t nlookup;
132};
133
134struct fuse_custom_io {
135 ssize_t (*writev)(int fd, struct iovec *iov, int count, void *userdata);
136 ssize_t (*read)(int fd, void *buf, size_t buf_len, void *userdata);
137 ssize_t (*splice_receive)(int fdin, off_t *offin, int fdout,
138 off_t *offout, size_t len,
139 unsigned int flags, void *userdata);
140 ssize_t (*splice_send)(int fdin, off_t *offin, int fdout,
141 off_t *offout, size_t len,
142 unsigned int flags, void *userdata);
143 int (*clone_fd)(int master_fd);
144};
145
151 enum fuse_notify_entry_flags {
152 FUSE_LL_INVALIDATE = 0,
153 FUSE_LL_EXPIRE_ONLY = (1 << 0),
154};
155
156/* 'to_set' flags in setattr */
157#define FUSE_SET_ATTR_MODE (1 << 0)
158#define FUSE_SET_ATTR_UID (1 << 1)
159#define FUSE_SET_ATTR_GID (1 << 2)
160#define FUSE_SET_ATTR_SIZE (1 << 3)
161#define FUSE_SET_ATTR_ATIME (1 << 4)
162#define FUSE_SET_ATTR_MTIME (1 << 5)
163#define FUSE_SET_ATTR_ATIME_NOW (1 << 7)
164#define FUSE_SET_ATTR_MTIME_NOW (1 << 8)
165#define FUSE_SET_ATTR_FORCE (1 << 9)
166#define FUSE_SET_ATTR_CTIME (1 << 10)
167#define FUSE_SET_ATTR_KILL_SUID (1 << 11)
168#define FUSE_SET_ATTR_KILL_SGID (1 << 12)
169#define FUSE_SET_ATTR_FILE (1 << 13)
170#define FUSE_SET_ATTR_KILL_PRIV (1 << 14)
171#define FUSE_SET_ATTR_OPEN (1 << 15)
172#define FUSE_SET_ATTR_TIMES_SET (1 << 16)
173#define FUSE_SET_ATTR_TOUCH (1 << 17)
174
175/* ----------------------------------------------------------- *
176 * Request methods and replies *
177 * ----------------------------------------------------------- */
178
208struct fuse_lowlevel_ops {
225 void (*init) (void *userdata, struct fuse_conn_info *conn);
226
238 void (*destroy) (void *userdata);
239
251 void (*lookup) (fuse_req_t req, fuse_ino_t parent, const char *name);
252
289 void (*forget) (fuse_req_t req, fuse_ino_t ino, uint64_t nlookup);
290
310 void (*getattr) (fuse_req_t req, fuse_ino_t ino,
311 struct fuse_file_info *fi);
312
347 void (*setattr) (fuse_req_t req, fuse_ino_t ino, struct stat *attr,
348 int to_set, struct fuse_file_info *fi);
349
360 void (*readlink) (fuse_req_t req, fuse_ino_t ino);
361
378 void (*mknod) (fuse_req_t req, fuse_ino_t parent, const char *name,
379 mode_t mode, dev_t rdev);
380
393 void (*mkdir) (fuse_req_t req, fuse_ino_t parent, const char *name,
394 mode_t mode);
395
411 void (*unlink) (fuse_req_t req, fuse_ino_t parent, const char *name);
412
428 void (*rmdir) (fuse_req_t req, fuse_ino_t parent, const char *name);
429
442 void (*symlink) (fuse_req_t req, const char *link, fuse_ino_t parent,
443 const char *name);
444
474 void (*rename) (fuse_req_t req, fuse_ino_t parent, const char *name,
475 fuse_ino_t newparent, const char *newname,
476 unsigned int flags);
477
490 void (*link) (fuse_req_t req, fuse_ino_t ino, fuse_ino_t newparent,
491 const char *newname);
492
556 void (*open) (fuse_req_t req, fuse_ino_t ino,
557 struct fuse_file_info *fi);
558
584 void (*read) (fuse_req_t req, fuse_ino_t ino, size_t size, off_t off,
585 struct fuse_file_info *fi);
586
613 void (*write) (fuse_req_t req, fuse_ino_t ino, const char *buf,
614 size_t size, off_t off, struct fuse_file_info *fi);
615
654 void (*flush) (fuse_req_t req, fuse_ino_t ino,
655 struct fuse_file_info *fi);
656
682 void (*release) (fuse_req_t req, fuse_ino_t ino,
683 struct fuse_file_info *fi);
684
704 void (*fsync) (fuse_req_t req, fuse_ino_t ino, int datasync,
705 struct fuse_file_info *fi);
706
736 void (*opendir) (fuse_req_t req, fuse_ino_t ino,
737 struct fuse_file_info *fi);
738
782 void (*readdir) (fuse_req_t req, fuse_ino_t ino, size_t size, off_t off,
783 struct fuse_file_info *fi);
784
801 void (*releasedir) (fuse_req_t req, fuse_ino_t ino,
802 struct fuse_file_info *fi);
803
826 void (*fsyncdir) (fuse_req_t req, fuse_ino_t ino, int datasync,
827 struct fuse_file_info *fi);
828
839 void (*statfs) (fuse_req_t req, fuse_ino_t ino);
840
852 void (*setxattr) (fuse_req_t req, fuse_ino_t ino, const char *name,
853 const char *value, size_t size, int flags);
854
883 void (*getxattr) (fuse_req_t req, fuse_ino_t ino, const char *name,
884 size_t size);
885
914 void (*listxattr) (fuse_req_t req, fuse_ino_t ino, size_t size);
915
931 void (*removexattr) (fuse_req_t req, fuse_ino_t ino, const char *name);
932
953 void (*access) (fuse_req_t req, fuse_ino_t ino, int mask);
954
982 void (*create) (fuse_req_t req, fuse_ino_t parent, const char *name,
983 mode_t mode, struct fuse_file_info *fi);
984
997 void (*getlk) (fuse_req_t req, fuse_ino_t ino,
998 struct fuse_file_info *fi, struct flock *lock);
999
1022 void (*setlk) (fuse_req_t req, fuse_ino_t ino,
1023 struct fuse_file_info *fi,
1024 struct flock *lock, int sleep);
1025
1046 void (*bmap) (fuse_req_t req, fuse_ino_t ino, size_t blocksize,
1047 uint64_t idx);
1048
1049#if FUSE_USE_VERSION < 35
1050 void (*ioctl) (fuse_req_t req, fuse_ino_t ino, int cmd,
1051 void *arg, struct fuse_file_info *fi, unsigned flags,
1052 const void *in_buf, size_t in_bufsz, size_t out_bufsz);
1053#else
1082 void (*ioctl) (fuse_req_t req, fuse_ino_t ino, unsigned int cmd,
1083 void *arg, struct fuse_file_info *fi, unsigned flags,
1084 const void *in_buf, size_t in_bufsz, size_t out_bufsz);
1085#endif
1086
1119 void (*poll) (fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi,
1120 struct fuse_pollhandle *ph);
1121
1149 void (*write_buf) (fuse_req_t req, fuse_ino_t ino,
1150 struct fuse_bufvec *bufv, off_t off,
1151 struct fuse_file_info *fi);
1152
1165 void (*retrieve_reply) (fuse_req_t req, void *cookie, fuse_ino_t ino,
1166 off_t offset, struct fuse_bufvec *bufv);
1167
1179 void (*forget_multi) (fuse_req_t req, size_t count,
1180 struct fuse_forget_data *forgets);
1181
1197 void (*flock) (fuse_req_t req, fuse_ino_t ino,
1198 struct fuse_file_info *fi, int op);
1199
1220 void (*fallocate) (fuse_req_t req, fuse_ino_t ino, int mode,
1221 off_t offset, off_t length, struct fuse_file_info *fi);
1222
1248 void (*readdirplus) (fuse_req_t req, fuse_ino_t ino, size_t size, off_t off,
1249 struct fuse_file_info *fi);
1250
1281 void (*copy_file_range) (fuse_req_t req, fuse_ino_t ino_in,
1282 off_t off_in, struct fuse_file_info *fi_in,
1283 fuse_ino_t ino_out, off_t off_out,
1284 struct fuse_file_info *fi_out, size_t len,
1285 int flags);
1286
1305 void (*lseek) (fuse_req_t req, fuse_ino_t ino, off_t off, int whence,
1306 struct fuse_file_info *fi);
1307
1326 void (*tmpfile) (fuse_req_t req, fuse_ino_t parent,
1327 mode_t mode, struct fuse_file_info *fi);
1328
1342 void (*statx)(fuse_req_t req, fuse_ino_t ino, int flags, int mask,
1343 struct fuse_file_info *fi);
1344};
1345
1367int fuse_reply_err(fuse_req_t req, int err);
1368
1379void fuse_reply_none(fuse_req_t req);
1380
1394int fuse_reply_entry(fuse_req_t req, const struct fuse_entry_param *e);
1395
1414int fuse_reply_create(fuse_req_t req, const struct fuse_entry_param *e,
1415 const struct fuse_file_info *fi);
1416
1428int fuse_reply_attr(fuse_req_t req, const struct stat *attr,
1429 double attr_timeout);
1430
1441int fuse_reply_readlink(fuse_req_t req, const char *link);
1442
1455int fuse_passthrough_open(fuse_req_t req, int fd);
1456int fuse_passthrough_close(fuse_req_t req, int backing_id);
1457
1472int fuse_reply_open(fuse_req_t req, const struct fuse_file_info *fi);
1473
1484int fuse_reply_write(fuse_req_t req, size_t count);
1485
1497int fuse_reply_buf(fuse_req_t req, const char *buf, size_t size);
1498
1542int fuse_reply_data(fuse_req_t req, struct fuse_bufvec *bufv,
1543 enum fuse_buf_copy_flags flags);
1544
1556int fuse_reply_iov(fuse_req_t req, const struct iovec *iov, int count);
1557
1568int fuse_reply_statfs(fuse_req_t req, const struct statvfs *stbuf);
1569
1580int fuse_reply_xattr(fuse_req_t req, size_t count);
1581
1592int fuse_reply_lock(fuse_req_t req, const struct flock *lock);
1593
1604int fuse_reply_bmap(fuse_req_t req, uint64_t idx);
1605
1606/* ----------------------------------------------------------- *
1607 * Filling a buffer in readdir *
1608 * ----------------------------------------------------------- */
1609
1637size_t fuse_add_direntry(fuse_req_t req, char *buf, size_t bufsize,
1638 const char *name, const struct stat *stbuf,
1639 off_t off);
1640
1654size_t fuse_add_direntry_plus(fuse_req_t req, char *buf, size_t bufsize,
1655 const char *name,
1656 const struct fuse_entry_param *e, off_t off);
1657
1673int fuse_reply_ioctl_retry(fuse_req_t req,
1674 const struct iovec *in_iov, size_t in_count,
1675 const struct iovec *out_iov, size_t out_count);
1676
1688int fuse_reply_ioctl(fuse_req_t req, int result, const void *buf, size_t size);
1689
1701int fuse_reply_ioctl_iov(fuse_req_t req, int result, const struct iovec *iov,
1702 int count);
1703
1710int fuse_reply_poll(fuse_req_t req, unsigned revents);
1711
1722int fuse_reply_lseek(fuse_req_t req, off_t off);
1723
1736int fuse_reply_statx(fuse_req_t req, int flags, struct statx *statx, double attr_timeout);
1737
1738/* ----------------------------------------------------------- *
1739 * Notification *
1740 * ----------------------------------------------------------- */
1741
1749int fuse_lowlevel_notify_poll(struct fuse_pollhandle *ph);
1750
1774int fuse_lowlevel_notify_inval_inode(struct fuse_session *se, fuse_ino_t ino,
1775 off_t off, off_t len);
1776
1789int fuse_lowlevel_notify_increment_epoch(struct fuse_session *se);
1790
1815int fuse_lowlevel_notify_inval_entry(struct fuse_session *se, fuse_ino_t parent,
1816 const char *name, size_t namelen);
1817
1846int fuse_lowlevel_notify_expire_entry(struct fuse_session *se, fuse_ino_t parent,
1847 const char *name, size_t namelen);
1848
1877int fuse_lowlevel_notify_delete(struct fuse_session *se,
1878 fuse_ino_t parent, fuse_ino_t child,
1879 const char *name, size_t namelen);
1880
1906int fuse_lowlevel_notify_store(struct fuse_session *se, fuse_ino_t ino,
1907 off_t offset, struct fuse_bufvec *bufv,
1908 enum fuse_buf_copy_flags flags);
1938int fuse_lowlevel_notify_retrieve(struct fuse_session *se, fuse_ino_t ino,
1939 size_t size, off_t offset, void *cookie);
1940
1941
1942/* ----------------------------------------------------------- *
1943 * Utility functions *
1944 * ----------------------------------------------------------- */
1945
1952void *fuse_req_userdata(fuse_req_t req);
1953
1963const struct fuse_ctx *fuse_req_ctx(fuse_req_t req);
1964
1984int fuse_req_getgroups(fuse_req_t req, int size, gid_t list[]);
1985
1992 typedef void (*fuse_interrupt_func_t)(fuse_req_t req, void *data);
1993
2005void fuse_req_interrupt_func(fuse_req_t req, fuse_interrupt_func_t func,
2006 void *data);
2007
2014int fuse_req_interrupted(fuse_req_t req);
2015
2016
2017/* ----------------------------------------------------------- *
2018 * Inquiry functions *
2019 * ----------------------------------------------------------- */
2020
2024void fuse_lowlevel_version(void);
2025
2031void fuse_lowlevel_help(void);
2032
2036void fuse_cmdline_help(void);
2037
2038/* ----------------------------------------------------------- *
2039 * Filesystem setup & teardown *
2040 * ----------------------------------------------------------- */
2041
2047struct fuse_cmdline_opts {
2048 int singlethread;
2049 int foreground;
2050 int debug;
2051 int nodefault_subtype;
2052 char *mountpoint;
2053 int show_version;
2054 int show_help;
2055 int clone_fd;
2056 unsigned int max_idle_threads; /* discouraged, due to thread
2057 * destruct overhead */
2058
2059 /* Added in libfuse-3.12 */
2060 unsigned int max_threads;
2061};
2062
2081#if (defined(LIBFUSE_BUILT_WITH_VERSIONED_SYMBOLS))
2082int fuse_parse_cmdline(struct fuse_args *args,
2083 struct fuse_cmdline_opts *opts);
2084#else
2085#if FUSE_USE_VERSION < FUSE_MAKE_VERSION(3, 12)
2086int fuse_parse_cmdline_30(struct fuse_args *args,
2087 struct fuse_cmdline_opts *opts);
2088#define fuse_parse_cmdline(args, opts) fuse_parse_cmdline_30(args, opts)
2089#else
2090int fuse_parse_cmdline_312(struct fuse_args *args,
2091 struct fuse_cmdline_opts *opts);
2092#define fuse_parse_cmdline(args, opts) fuse_parse_cmdline_312(args, opts)
2093#endif
2094#endif
2095
2096/* Do not call this directly, use fuse_session_new() instead */
2097struct fuse_session *
2098fuse_session_new_versioned(struct fuse_args *args,
2099 const struct fuse_lowlevel_ops *op, size_t op_size,
2100 struct libfuse_version *version, void *userdata);
2101
2132static inline struct fuse_session *
2133fuse_session_new_fn(struct fuse_args *args, const struct fuse_lowlevel_ops *op,
2134 size_t op_size, void *userdata)
2135{
2136 struct libfuse_version version = {
2137 .major = FUSE_MAJOR_VERSION,
2138 .minor = FUSE_MINOR_VERSION,
2139 .hotfix = FUSE_HOTFIX_VERSION,
2140 .padding = 0
2141 };
2142
2143 return fuse_session_new_versioned(args, op, op_size, &version,
2144 userdata);
2145}
2146#define fuse_session_new(args, op, op_size, userdata) \
2147 fuse_session_new_fn(args, op, op_size, userdata)
2148
2149/*
2150 * This should mostly not be called directly, but instead the
2151 * fuse_session_custom_io() should be used.
2152 */
2153int fuse_session_custom_io_317(struct fuse_session *se,
2154 const struct fuse_custom_io *io, size_t op_size, int fd);
2155
2183#if FUSE_MAKE_VERSION(3, 17) <= FUSE_USE_VERSION
2184static inline int fuse_session_custom_io(struct fuse_session *se,
2185 const struct fuse_custom_io *io, size_t op_size, int fd)
2186{
2187 return fuse_session_custom_io_317(se, io, op_size, fd);
2188}
2189#else
2190static inline int fuse_session_custom_io(struct fuse_session *se,
2191 const struct fuse_custom_io *io, int fd)
2192{
2193 return fuse_session_custom_io_317(se, io,
2194 offsetof(struct fuse_custom_io, clone_fd), fd);
2195}
2196#endif
2197
2206int fuse_session_mount(struct fuse_session *se, const char *mountpoint);
2207
2230int fuse_session_loop(struct fuse_session *se);
2231
2232#if FUSE_USE_VERSION < 32
2233 int fuse_session_loop_mt_31(struct fuse_session *se, int clone_fd);
2234 #define fuse_session_loop_mt(se, clone_fd) fuse_session_loop_mt_31(se, clone_fd)
2235#elif FUSE_USE_VERSION < FUSE_MAKE_VERSION(3, 12)
2236 int fuse_session_loop_mt_32(struct fuse_session *se, struct fuse_loop_config *config);
2237 #define fuse_session_loop_mt(se, config) fuse_session_loop_mt_32(se, config)
2238#else
2239 #if (defined(LIBFUSE_BUILT_WITH_VERSIONED_SYMBOLS))
2251 int fuse_session_loop_mt(struct fuse_session *se, struct fuse_loop_config *config);
2252 #else
2253 int fuse_session_loop_mt_312(struct fuse_session *se, struct fuse_loop_config *config);
2254 #define fuse_session_loop_mt(se, config) fuse_session_loop_mt_312(se, config)
2255 #endif
2256#endif
2257
2270 void fuse_session_exit(struct fuse_session *se);
2271
2277 void fuse_session_reset(struct fuse_session *se);
2278
2285 int fuse_session_exited(struct fuse_session *se);
2286
2311void fuse_session_unmount(struct fuse_session *se);
2312
2318void fuse_session_destroy(struct fuse_session *se);
2319
2320/* ----------------------------------------------------------- *
2321 * Custom event loop support *
2322 * ----------------------------------------------------------- */
2323
2338int fuse_session_fd(struct fuse_session *se);
2339
2348void fuse_session_process_buf(struct fuse_session *se,
2349 const struct fuse_buf *buf);
2350
2362int fuse_session_receive_buf(struct fuse_session *se, struct fuse_buf *buf);
2363
2367bool fuse_req_is_uring(fuse_req_t req);
2368
2384int fuse_req_get_payload(fuse_req_t req, char **payload, size_t *payload_sz,
2385 void **mr);
2386
2387#ifdef __cplusplus
2388}
2389#endif
2390
2391#endif /* FUSE_LOWLEVEL_H_ */
fuse_buf_copy_flags
fuse_buf_copy_flags
Definition fuse_common.h:829
fuse_session_destroy
void fuse_session_destroy(struct fuse_session *se)
Definition fuse_lowlevel.c:3010
fuse_notify_entry_flags
fuse_notify_entry_flags
Definition fuse_lowlevel.h:148
fuse_reply_data
int fuse_reply_data(fuse_req_t req, struct fuse_bufvec *bufv, enum fuse_buf_copy_flags flags)
Definition fuse_lowlevel.c:912
fuse_reply_lock
int fuse_reply_lock(fuse_req_t req, const struct flock *lock)
Definition fuse_lowlevel.c:956
fuse_reply_open
int fuse_reply_open(fuse_req_t req, const struct fuse_file_info *fi)
Definition fuse_lowlevel.c:505
fuse_session_exit
void fuse_session_exit(struct fuse_session *se)
fuse_interrupt_func_t
void(* fuse_interrupt_func_t)(fuse_req_t req, void *data)
Definition fuse_lowlevel.h:1948
fuse_reply_poll
int fuse_reply_poll(fuse_req_t req, unsigned revents)
Definition fuse_lowlevel.c:1116
fuse_reply_err
int fuse_reply_err(fuse_req_t req, int err)
Definition fuse_lowlevel.c:331
fuse_req_ctx
const struct fuse_ctx * fuse_req_ctx(fuse_req_t req)
Definition fuse_lowlevel.c:2718
fuse_req_userdata
void * fuse_req_userdata(fuse_req_t req)
Definition fuse_lowlevel.c:2713
fuse_reply_buf
int fuse_reply_buf(fuse_req_t req, const char *buf, size_t size)
Definition fuse_lowlevel.c:524
fuse_req_t
struct fuse_req * fuse_req_t
Definition fuse_lowlevel.h:50
fuse_add_direntry_plus
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)
Definition fuse_lowlevel.c:376
fuse_reply_ioctl_iov
int fuse_reply_ioctl_iov(fuse_req_t req, int result, const struct iovec *iov, int count)
Definition fuse_lowlevel.c:1092
fuse_lowlevel_notify_delete
int fuse_lowlevel_notify_delete(struct fuse_session *se, fuse_ino_t parent, fuse_ino_t child, const char *name, size_t namelen)
Definition fuse_lowlevel.c:2562
fuse_session_process_buf
void fuse_session_process_buf(struct fuse_session *se, const struct fuse_buf *buf)
Definition fuse_lowlevel.c:2830
fuse_session_exited
int fuse_session_exited(struct fuse_session *se)
fuse_session_fd
int fuse_session_fd(struct fuse_session *se)
Definition fuse_lowlevel.c:3534
fuse_req_interrupted
int fuse_req_interrupted(fuse_req_t req)
Definition fuse_lowlevel.c:2736
fuse_req_getgroups
int fuse_req_getgroups(fuse_req_t req, int size, gid_t list[])
Definition fuse_lowlevel.c:3614
fuse_lowlevel_notify_retrieve
int fuse_lowlevel_notify_retrieve(struct fuse_session *se, fuse_ino_t ino, size_t size, off_t offset, void *cookie)
Definition fuse_lowlevel.c:2668
fuse_reply_readlink
int fuse_reply_readlink(fuse_req_t req, const char *link)
Definition fuse_lowlevel.c:475
fuse_session_loop
int fuse_session_loop(struct fuse_session *se)
Definition fuse_loop.c:19
fuse_reply_iov
int fuse_reply_iov(fuse_req_t req, const struct iovec *iov, int count)
Definition fuse_lowlevel.c:265
fuse_reply_bmap
int fuse_reply_bmap(fuse_req_t req, uint64_t idx)
Definition fuse_lowlevel.c:973
fuse_reply_entry
int fuse_reply_entry(fuse_req_t req, const struct fuse_entry_param *e)
Definition fuse_lowlevel.c:428
fuse_session_unmount
void fuse_session_unmount(struct fuse_session *se)
Definition fuse_lowlevel.c:3539
fuse_cmdline_help
void fuse_cmdline_help(void)
Definition helper.c:130
fuse_reply_none
void fuse_reply_none(fuse_req_t req)
Definition fuse_lowlevel.c:336
fuse_lowlevel_notify_expire_entry
int fuse_lowlevel_notify_expire_entry(struct fuse_session *se, fuse_ino_t parent, const char *name, size_t namelen)
Definition fuse_lowlevel.c:2549
fuse_reply_ioctl_retry
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)
Definition fuse_lowlevel.c:1001
fuse_lowlevel_help
void fuse_lowlevel_help(void)
Definition fuse_lowlevel.c:3000
fuse_lowlevel_notify_inval_inode
int fuse_lowlevel_notify_inval_inode(struct fuse_session *se, fuse_ino_t ino, off_t off, off_t len)
Definition fuse_lowlevel.c:2475
fuse_reply_statfs
int fuse_reply_statfs(fuse_req_t req, const struct statvfs *stbuf)
Definition fuse_lowlevel.c:934
fuse_reply_write
int fuse_reply_write(fuse_req_t req, size_t count)
Definition fuse_lowlevel.c:514
fuse_session_receive_buf
int fuse_session_receive_buf(struct fuse_session *se, struct fuse_buf *buf)
Definition fuse_lowlevel.c:3285
fuse_session_mount
int fuse_session_mount(struct fuse_session *se, const char *mountpoint)
Definition fuse_lowlevel.c:3473
fuse_parse_cmdline_30
int fuse_parse_cmdline_30(struct fuse_args *args, struct fuse_cmdline_opts *opts)
Definition helper.c:237
fuse_lowlevel_notify_poll
int fuse_lowlevel_notify_poll(struct fuse_pollhandle *ph)
Definition fuse_lowlevel.c:2458
fuse_lowlevel_notify_inval_entry
int fuse_lowlevel_notify_inval_entry(struct fuse_session *se, fuse_ino_t parent, const char *name, size_t namelen)
Definition fuse_lowlevel.c:2543
fuse_req_interrupt_func
void fuse_req_interrupt_func(fuse_req_t req, fuse_interrupt_func_t func, void *data)
Definition fuse_lowlevel.c:2723
fuse_session_reset
void fuse_session_reset(struct fuse_session *se)
fuse_reply_create
int fuse_reply_create(fuse_req_t req, const struct fuse_entry_param *e, const struct fuse_file_info *fi)
Definition fuse_lowlevel.c:444
fuse_reply_lseek
int fuse_reply_lseek(fuse_req_t req, off_t off)
Definition fuse_lowlevel.c:1126
fuse_lowlevel_version
void fuse_lowlevel_version(void)
Definition fuse_lowlevel.c:2993
fuse_ino_t
uint64_t fuse_ino_t
Definition fuse_lowlevel.h:47
fuse_add_direntry
size_t fuse_add_direntry(fuse_req_t req, char *buf, size_t bufsize, const char *name, const struct stat *stbuf, off_t off)
Definition fuse_lowlevel.c:286
fuse_reply_attr
int fuse_reply_attr(fuse_req_t req, const struct stat *attr, double attr_timeout)
Definition fuse_lowlevel.c:460
fuse_reply_ioctl
int fuse_reply_ioctl(fuse_req_t req, int result, const void *buf, size_t size)
Definition fuse_lowlevel.c:1071
fuse_passthrough_open
int fuse_passthrough_open(fuse_req_t req, int fd)
Definition fuse_lowlevel.c:480
fuse_lowlevel_notify_store
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)
Definition fuse_lowlevel.c:2588
fuse_reply_xattr
int fuse_reply_xattr(fuse_req_t req, size_t count)
Definition fuse_lowlevel.c:946
fuse_req_is_uring
bool fuse_req_is_uring(fuse_req_t req)
Definition fuse_lowlevel.c:3380
fuse_req_get_payload
int fuse_req_get_payload(fuse_req_t req, char **payload, size_t *payload_sz, void **mr)
Definition fuse_lowlevel.c:3386
fuse_lowlevel_notify_increment_epoch
int fuse_lowlevel_notify_increment_epoch(struct fuse_session *se)
Definition fuse_lowlevel.c:3116
fuse_reply_statx
int fuse_reply_statx(fuse_req_t req, int flags, struct statx *statx, double attr_timeout)
Definition fuse_lowlevel.c:1260
fuse_common.h
fuse_args
Definition fuse_opt.h:109
fuse_buf
Definition fuse_common.h:874
fuse_bufvec
Definition fuse_common.h:923
fuse_cmdline_opts
Definition fuse_lowlevel.h:2003
fuse_conn_info
Definition fuse_common.h:538
fuse_ctx
Definition fuse_lowlevel.h:112
fuse_ctx::pid
pid_t pid
Definition fuse_lowlevel.h:120
fuse_ctx::gid
gid_t gid
Definition fuse_lowlevel.h:117
fuse_ctx::umask
mode_t umask
Definition fuse_lowlevel.h:123
fuse_ctx::uid
uid_t uid
Definition fuse_lowlevel.h:114
fuse_entry_param
Definition fuse_lowlevel.h:60
fuse_entry_param::entry_timeout
double entry_timeout
Definition fuse_lowlevel.h:101
fuse_entry_param::ino
fuse_ino_t ino
Definition fuse_lowlevel.h:68
fuse_entry_param::generation
uint64_t generation
Definition fuse_lowlevel.h:80
fuse_entry_param::attr_timeout
double attr_timeout
Definition fuse_lowlevel.h:95
fuse_entry_param::attr
struct stat attr
Definition fuse_lowlevel.h:89
fuse_file_info
Definition fuse_common.h:50
fuse_file_info::backing_id
int32_t backing_id
Definition fuse_common.h:119
fuse_file_info::flags
int32_t flags
Definition fuse_common.h:52
fuse_loop_config
Definition fuse_common.h:139
fuse_lowlevel_ops
Definition fuse_lowlevel.h:206
fuse_lowlevel_ops::flock
void(* flock)(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi, int op)
Definition fuse_lowlevel.h:1195
fuse_lowlevel_ops::write
void(* write)(fuse_req_t req, fuse_ino_t ino, const char *buf, size_t size, off_t off, struct fuse_file_info *fi)
Definition fuse_lowlevel.h:611
fuse_lowlevel_ops::lseek
void(* lseek)(fuse_req_t req, fuse_ino_t ino, off_t off, int whence, struct fuse_file_info *fi)
Definition fuse_lowlevel.h:1303
fuse_lowlevel_ops::listxattr
void(* listxattr)(fuse_req_t req, fuse_ino_t ino, size_t size)
Definition fuse_lowlevel.h:912
fuse_lowlevel_ops::removexattr
void(* removexattr)(fuse_req_t req, fuse_ino_t ino, const char *name)
Definition fuse_lowlevel.h:929
fuse_lowlevel_ops::forget_multi
void(* forget_multi)(fuse_req_t req, size_t count, struct fuse_forget_data *forgets)
Definition fuse_lowlevel.h:1177
fuse_lowlevel_ops::retrieve_reply
void(* retrieve_reply)(fuse_req_t req, void *cookie, fuse_ino_t ino, off_t offset, struct fuse_bufvec *bufv)
Definition fuse_lowlevel.h:1163
fuse_lowlevel_ops::create
void(* create)(fuse_req_t req, fuse_ino_t parent, const char *name, mode_t mode, struct fuse_file_info *fi)
Definition fuse_lowlevel.h:980
fuse_lowlevel_ops::mkdir
void(* mkdir)(fuse_req_t req, fuse_ino_t parent, const char *name, mode_t mode)
Definition fuse_lowlevel.h:391
fuse_lowlevel_ops::symlink
void(* symlink)(fuse_req_t req, const char *link, fuse_ino_t parent, const char *name)
Definition fuse_lowlevel.h:440
fuse_lowlevel_ops::write_buf
void(* write_buf)(fuse_req_t req, fuse_ino_t ino, struct fuse_bufvec *bufv, off_t off, struct fuse_file_info *fi)
Definition fuse_lowlevel.h:1147
fuse_lowlevel_ops::rmdir
void(* rmdir)(fuse_req_t req, fuse_ino_t parent, const char *name)
Definition fuse_lowlevel.h:426
fuse_lowlevel_ops::link
void(* link)(fuse_req_t req, fuse_ino_t ino, fuse_ino_t newparent, const char *newname)
Definition fuse_lowlevel.h:488
fuse_lowlevel_ops::rename
void(* rename)(fuse_req_t req, fuse_ino_t parent, const char *name, fuse_ino_t newparent, const char *newname, unsigned int flags)
Definition fuse_lowlevel.h:472
fuse_lowlevel_ops::copy_file_range
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)
Definition fuse_lowlevel.h:1279
fuse_lowlevel_ops::poll
void(* poll)(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi, struct fuse_pollhandle *ph)
Definition fuse_lowlevel.h:1117
fuse_lowlevel_ops::opendir
void(* opendir)(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi)
Definition fuse_lowlevel.h:734
fuse_lowlevel_ops::mknod
void(* mknod)(fuse_req_t req, fuse_ino_t parent, const char *name, mode_t mode, dev_t rdev)
Definition fuse_lowlevel.h:376
fuse_lowlevel_ops::fallocate
void(* fallocate)(fuse_req_t req, fuse_ino_t ino, int mode, off_t offset, off_t length, struct fuse_file_info *fi)
Definition fuse_lowlevel.h:1218
fuse_lowlevel_ops::setattr
void(* setattr)(fuse_req_t req, fuse_ino_t ino, struct stat *attr, int to_set, struct fuse_file_info *fi)
Definition fuse_lowlevel.h:345
fuse_lowlevel_ops::getlk
void(* getlk)(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi, struct flock *lock)
Definition fuse_lowlevel.h:995
fuse_lowlevel_ops::fsync
void(* fsync)(fuse_req_t req, fuse_ino_t ino, int datasync, struct fuse_file_info *fi)
Definition fuse_lowlevel.h:702
fuse_lowlevel_ops::destroy
void(* destroy)(void *userdata)
Definition fuse_lowlevel.h:236
fuse_lowlevel_ops::forget
void(* forget)(fuse_req_t req, fuse_ino_t ino, uint64_t nlookup)
Definition fuse_lowlevel.h:287
fuse_lowlevel_ops::getattr
void(* getattr)(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi)
Definition fuse_lowlevel.h:308
fuse_lowlevel_ops::ioctl
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)
Definition fuse_lowlevel.h:1080
fuse_lowlevel_ops::open
void(* open)(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi)
Definition fuse_lowlevel.h:554
fuse_lowlevel_ops::getxattr
void(* getxattr)(fuse_req_t req, fuse_ino_t ino, const char *name, size_t size)
Definition fuse_lowlevel.h:881
fuse_lowlevel_ops::fsyncdir
void(* fsyncdir)(fuse_req_t req, fuse_ino_t ino, int datasync, struct fuse_file_info *fi)
Definition fuse_lowlevel.h:824
fuse_lowlevel_ops::init
void(* init)(void *userdata, struct fuse_conn_info *conn)
Definition fuse_lowlevel.h:223
fuse_lowlevel_ops::read
void(* read)(fuse_req_t req, fuse_ino_t ino, size_t size, off_t off, struct fuse_file_info *fi)
Definition fuse_lowlevel.h:582
fuse_lowlevel_ops::setxattr
void(* setxattr)(fuse_req_t req, fuse_ino_t ino, const char *name, const char *value, size_t size, int flags)
Definition fuse_lowlevel.h:850
fuse_lowlevel_ops::release
void(* release)(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi)
Definition fuse_lowlevel.h:680
fuse_lowlevel_ops::access
void(* access)(fuse_req_t req, fuse_ino_t ino, int mask)
Definition fuse_lowlevel.h:951
fuse_lowlevel_ops::releasedir
void(* releasedir)(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi)
Definition fuse_lowlevel.h:799
fuse_lowlevel_ops::statx
void(* statx)(fuse_req_t req, fuse_ino_t ino, int flags, int mask, struct fuse_file_info *fi)
Definition fuse_lowlevel.h:1342
fuse_lowlevel_ops::tmpfile
void(* tmpfile)(fuse_req_t req, fuse_ino_t parent, mode_t mode, struct fuse_file_info *fi)
Definition fuse_lowlevel.h:1325
fuse_lowlevel_ops::bmap
void(* bmap)(fuse_req_t req, fuse_ino_t ino, size_t blocksize, uint64_t idx)
Definition fuse_lowlevel.h:1044
fuse_lowlevel_ops::readlink
void(* readlink)(fuse_req_t req, fuse_ino_t ino)
Definition fuse_lowlevel.h:358
fuse_lowlevel_ops::lookup
void(* lookup)(fuse_req_t req, fuse_ino_t parent, const char *name)
Definition fuse_lowlevel.h:249
fuse_lowlevel_ops::statfs
void(* statfs)(fuse_req_t req, fuse_ino_t ino)
Definition fuse_lowlevel.h:837
fuse_lowlevel_ops::readdir
void(* readdir)(fuse_req_t req, fuse_ino_t ino, size_t size, off_t off, struct fuse_file_info *fi)
Definition fuse_lowlevel.h:780
fuse_lowlevel_ops::setlk
void(* setlk)(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi, struct flock *lock, int sleep)
Definition fuse_lowlevel.h:1020
fuse_lowlevel_ops::readdirplus
void(* readdirplus)(fuse_req_t req, fuse_ino_t ino, size_t size, off_t off, struct fuse_file_info *fi)
Definition fuse_lowlevel.h:1246
fuse_lowlevel_ops::flush
void(* flush)(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi)
Definition fuse_lowlevel.h:652
fuse_lowlevel_ops::unlink
void(* unlink)(fuse_req_t req, fuse_ino_t parent, const char *name)
Definition fuse_lowlevel.h:409
libfuse_version
Definition fuse_common.h:950