25#include <sys/statvfs.h>
55 FUSE_READDIR_PLUS = (1 << 0)
75 FUSE_FILL_DIR_PLUS = (1 << 1)
94 const struct stat *stbuf, off_t off,
266 int32_t ac_attr_timeout_set;
267 double ac_attr_timeout;
377 int (*
readlink) (
const char *,
char *, size_t);
385 int (*
mknod) (
const char *, mode_t, dev_t);
393 int (*
mkdir) (
const char *, mode_t);
396 int (*
unlink) (
const char *);
399 int (*
rmdir) (
const char *);
402 int (*
symlink) (
const char *,
const char *);
413 int (*
rename) (
const char *,
const char *,
unsigned int flags);
416 int (*
link) (
const char *,
const char *);
503 int (*
read) (
const char *,
char *, size_t, off_t,
515 int (*
write) (
const char *,
const char *, size_t, off_t,
522 int (*
statfs) (
const char *,
struct statvfs *);
576 int (*
setxattr) (
const char *,
const char *,
const char *, size_t, int);
579 int (*
getxattr) (
const char *,
const char *,
char *, size_t);
582 int (*
listxattr) (
const char *,
char *, size_t);
655 void (*
destroy) (
void *private_data);
666 int (*
access) (
const char *, int);
725 int (*
utimens) (
const char *,
const struct timespec tv[2],
734 int (*
bmap) (
const char *,
size_t blocksize, uint64_t *idx);
736#if FUSE_USE_VERSION < 35
737 int (*
ioctl) (
const char *,
int cmd,
void *arg,
756 int (*
ioctl) (
const char *,
unsigned int cmd,
void *arg,
776 struct fuse_pollhandle *ph,
unsigned *reventsp);
834 int (*
fallocate) (
const char *, int, off_t, off_t,
851 off_t offset_in,
const char *path_out,
853 off_t offset_out,
size_t size,
int flags);
868 int (*
statx)(
const char *path,
int flags,
int mask,
struct statx *stxbuf,
905static inline int fuse_main_real(
int argc,
char *argv[],
907 size_t op_size,
void *user_data)
910 .minor = FUSE_MINOR_VERSION,
911 .hotfix = FUSE_HOTFIX_VERSION,
915 "%s is a libfuse internal function, please use fuse_main()\n",
976static inline int fuse_main_fn(
int argc,
char *argv[],
981 .major = FUSE_MAJOR_VERSION,
982 .minor = FUSE_MINOR_VERSION,
983 .hotfix = FUSE_HOTFIX_VERSION,
990#define fuse_main(argc, argv, op, user_data) \
991 fuse_main_fn(argc, argv, op, user_data)
1011struct fuse *_fuse_new_30(
struct fuse_args *args,
1014struct fuse *_fuse_new_31(
struct fuse_args *args,
1045#if FUSE_USE_VERSION == 30
1046static inline struct fuse *fuse_new_fn(
struct fuse_args *args,
1048 size_t op_size,
void *user_data)
1051 .major = FUSE_MAJOR_VERSION,
1052 .minor = FUSE_MINOR_VERSION,
1053 .hotfix = FUSE_HOTFIX_VERSION,
1057 return _fuse_new_30(args, op, op_size, &version, user_data);
1060static inline struct fuse *fuse_new_fn(
struct fuse_args *args,
1062 size_t op_size,
void *user_data)
1065 .major = FUSE_MAJOR_VERSION,
1066 .minor = FUSE_MINOR_VERSION,
1067 .hotfix = FUSE_HOTFIX_VERSION,
1071 return _fuse_new_31(args, op, op_size, &version, user_data);
1074#define fuse_new(args, op, size, data) fuse_new_fn(args, op, size, data)
1084int fuse_mount(
struct fuse *f,
const char *mountpoint);
1132#if FUSE_USE_VERSION < 32
1133int fuse_loop_mt_31(
struct fuse *f,
int clone_fd);
1134#define fuse_loop_mt(f, clone_fd) fuse_loop_mt_31(f, clone_fd)
1135#elif FUSE_USE_VERSION < FUSE_MAKE_VERSION(3, 12)
1137#define fuse_loop_mt(f, config) fuse_loop_mt_32(f, config)
1170#if (defined(LIBFUSE_BUILT_WITH_VERSIONED_SYMBOLS))
1173#define fuse_loop_mt(f, config) fuse_loop_mt_312(f, config)
1276int fuse_fs_getattr(
struct fuse_fs *fs,
const char *path,
struct stat *buf,
1278int fuse_fs_rename(
struct fuse_fs *fs,
const char *oldpath,
1279 const char *newpath,
unsigned int flags);
1280int fuse_fs_unlink(
struct fuse_fs *fs,
const char *path);
1281int fuse_fs_rmdir(
struct fuse_fs *fs,
const char *path);
1282int fuse_fs_symlink(
struct fuse_fs *fs,
const char *linkname,
1284int fuse_fs_link(
struct fuse_fs *fs,
const char *oldpath,
const char *newpath);
1285int fuse_fs_release(
struct fuse_fs *fs,
const char *path,
1287int fuse_fs_open(
struct fuse_fs *fs,
const char *path,
1289int fuse_fs_read(
struct fuse_fs *fs,
const char *path,
char *buf,
size_t size,
1291int fuse_fs_read_buf(
struct fuse_fs *fs,
const char *path,
1292 struct fuse_bufvec **bufp,
size_t size, off_t off,
1294int fuse_fs_write(
struct fuse_fs *fs,
const char *path,
const char *buf,
1296int fuse_fs_write_buf(
struct fuse_fs *fs,
const char *path,
1299int fuse_fs_fsync(
struct fuse_fs *fs,
const char *path,
int datasync,
1301int fuse_fs_flush(
struct fuse_fs *fs,
const char *path,
1303int fuse_fs_statfs(
struct fuse_fs *fs,
const char *path,
struct statvfs *buf);
1304int fuse_fs_opendir(
struct fuse_fs *fs,
const char *path,
1306int fuse_fs_readdir(
struct fuse_fs *fs,
const char *path,
void *buf,
1309int fuse_fs_fsyncdir(
struct fuse_fs *fs,
const char *path,
int datasync,
1311int fuse_fs_releasedir(
struct fuse_fs *fs,
const char *path,
1313int fuse_fs_create(
struct fuse_fs *fs,
const char *path, mode_t mode,
1315int fuse_fs_lock(
struct fuse_fs *fs,
const char *path,
1317int fuse_fs_flock(
struct fuse_fs *fs,
const char *path,
1319int fuse_fs_chmod(
struct fuse_fs *fs,
const char *path, mode_t mode,
1321int fuse_fs_chown(
struct fuse_fs *fs,
const char *path, uid_t uid, gid_t gid,
1323int fuse_fs_truncate(
struct fuse_fs *fs,
const char *path, off_t size,
1325int fuse_fs_utimens(
struct fuse_fs *fs,
const char *path,
1327int fuse_fs_access(
struct fuse_fs *fs,
const char *path,
int mask);
1328int fuse_fs_readlink(
struct fuse_fs *fs,
const char *path,
char *buf,
1330int fuse_fs_mknod(
struct fuse_fs *fs,
const char *path, mode_t mode,
1332int fuse_fs_mkdir(
struct fuse_fs *fs,
const char *path, mode_t mode);
1333int fuse_fs_setxattr(
struct fuse_fs *fs,
const char *path,
const char *name,
1334 const char *value,
size_t size,
int flags);
1335int fuse_fs_getxattr(
struct fuse_fs *fs,
const char *path,
const char *name,
1336 char *value,
size_t size);
1337int fuse_fs_listxattr(
struct fuse_fs *fs,
const char *path,
char *list,
1339int fuse_fs_removexattr(
struct fuse_fs *fs,
const char *path,
1341int fuse_fs_bmap(
struct fuse_fs *fs,
const char *path,
size_t blocksize,
1343#if FUSE_USE_VERSION < 35
1344int fuse_fs_ioctl(
struct fuse_fs *fs,
const char *path,
int cmd,
1348int fuse_fs_ioctl(
struct fuse_fs *fs,
const char *path,
unsigned int cmd,
1352int fuse_fs_poll(
struct fuse_fs *fs,
const char *path,
1354 unsigned *reventsp);
1355int fuse_fs_fallocate(
struct fuse_fs *fs,
const char *path,
int mode,
1357ssize_t fuse_fs_copy_file_range(
struct fuse_fs *fs,
const char *path_in,
1359 const char *path_out,
1361 size_t len,
int flags);
1362off_t fuse_fs_lseek(
struct fuse_fs *fs,
const char *path, off_t off,
int whence,
1364int fuse_fs_statx(
struct fuse_fs *fs,
const char *path,
int flags,
int mask,
1366void fuse_fs_init(
struct fuse_fs *fs,
struct fuse_conn_info *conn,
1368void fuse_fs_destroy(
struct fuse_fs *fs);
1370int fuse_notify_poll(
struct fuse_pollhandle *ph);
1386 void *private_data);
1402typedef struct fuse_fs *(*fuse_module_factory_t)(
struct fuse_args *args,
1403 struct fuse_fs *fs[]);
1414#define FUSE_REGISTER_MODULE(name_, factory_) \
1415 fuse_module_factory_t fuse_module_ ## name_ ## _factory = factory_
int fuse_getgroups(int size, gid_t list[])
int fuse_mount(struct fuse *f, const char *mountpoint)
int fuse_interrupted(void)
void fuse_destroy(struct fuse *f)
int fuse_main_real_versioned(int argc, char *argv[], const struct fuse_operations *op, size_t op_size, struct libfuse_version *version, void *user_data)
int fuse_start_cleanup_thread(struct fuse *fuse)
int fuse_invalidate_path(struct fuse *f, const char *path)
struct fuse_context * fuse_get_context(void)
int fuse_loop(struct fuse *f)
int(* fuse_fill_dir_t)(void *buf, const char *name, const struct stat *stbuf, off_t off, enum fuse_fill_dir_flags flags)
void fuse_exit(struct fuse *f)
int fuse_clean_cache(struct fuse *fuse)
void fuse_lib_help(struct fuse_args *args)
int fuse_open_channel(const char *mountpoint, const char *options)
struct fuse_session * fuse_get_session(struct fuse *f)
void fuse_unmount(struct fuse *f)
struct fuse_fs * fuse_fs_new(const struct fuse_operations *op, size_t op_size, void *private_data)
void fuse_stop_cleanup_thread(struct fuse *fuse)
void fuse_log(enum fuse_log_level level, const char *fmt,...)
int(* fuse_fill_dir_t)(void *buf, const char *name, const struct stat *stbuf, off_t off, enum fuse_fill_dir_flags flags)
int32_t parallel_direct_writes
int(* mkdir)(const char *, mode_t)
int(* truncate)(const char *, off_t, struct fuse_file_info *fi)
int(* mknod)(const char *, mode_t, dev_t)
int(* utimens)(const char *, const struct timespec tv[2], struct fuse_file_info *fi)
int(* open)(const char *, struct fuse_file_info *)
int(* opendir)(const char *, struct fuse_file_info *)
int(* link)(const char *, const char *)
int(* lock)(const char *, struct fuse_file_info *, int cmd, struct flock *)
int(* read_buf)(const char *, struct fuse_bufvec **bufp, size_t size, off_t off, struct fuse_file_info *)
int(* access)(const char *, int)
int(* read)(const char *, char *, size_t, off_t, struct fuse_file_info *)
int(* poll)(const char *, struct fuse_file_info *, struct fuse_pollhandle *ph, unsigned *reventsp)
void(* destroy)(void *private_data)
int(* statfs)(const char *, struct statvfs *)
int(* fallocate)(const char *, int, off_t, off_t, struct fuse_file_info *)
int(* removexattr)(const char *, const char *)
int(* getattr)(const char *, struct stat *, struct fuse_file_info *fi)
int(* releasedir)(const char *, struct fuse_file_info *)
int(* rename)(const char *, const char *, unsigned int flags)
off_t(* lseek)(const char *, off_t off, int whence, struct fuse_file_info *)
int(* write)(const char *, const char *, size_t, off_t, struct fuse_file_info *)
int(* write_buf)(const char *, struct fuse_bufvec *buf, off_t off, struct fuse_file_info *)
int(* unlink)(const char *)
ssize_t(* copy_file_range)(const char *path_in, struct fuse_file_info *fi_in, off_t offset_in, const char *path_out, struct fuse_file_info *fi_out, off_t offset_out, size_t size, int flags)
int(* fsync)(const char *, int, struct fuse_file_info *)
int(* create)(const char *, mode_t, struct fuse_file_info *)
int(* setxattr)(const char *, const char *, const char *, size_t, int)
int(* listxattr)(const char *, char *, size_t)
int(* readlink)(const char *, char *, size_t)
int(* symlink)(const char *, const char *)
int(* fsyncdir)(const char *, int, struct fuse_file_info *)
int(* release)(const char *, struct fuse_file_info *)
int(* chown)(const char *, uid_t, gid_t, struct fuse_file_info *fi)
int(* chmod)(const char *, mode_t, struct fuse_file_info *fi)
int(* statx)(const char *path, int flags, int mask, struct statx *stxbuf, struct fuse_file_info *fi)
int(* rmdir)(const char *)
int(* flush)(const char *, struct fuse_file_info *)
int(* flock)(const char *, struct fuse_file_info *, int op)
int(* ioctl)(const char *, unsigned int cmd, void *arg, struct fuse_file_info *, unsigned int flags, void *data)
int(* readdir)(const char *, void *, fuse_fill_dir_t, off_t, struct fuse_file_info *, enum fuse_readdir_flags)
int(* getxattr)(const char *, const char *, char *, size_t)
int(* bmap)(const char *, size_t blocksize, uint64_t *idx)