138 #ifndef _LINUX_FUSE_H 
  139 #define _LINUX_FUSE_H 
  142 #include <linux/types.h> 
  168 #define FUSE_KERNEL_VERSION 7 
  171 #define FUSE_KERNEL_MINOR_VERSION 31 
  174 #define FUSE_ROOT_ID 1 
  198 struct fuse_kstatfs {
 
  211 struct fuse_file_lock {
 
  221 #define FATTR_MODE      (1 << 0) 
  222 #define FATTR_UID       (1 << 1) 
  223 #define FATTR_GID       (1 << 2) 
  224 #define FATTR_SIZE      (1 << 3) 
  225 #define FATTR_ATIME     (1 << 4) 
  226 #define FATTR_MTIME     (1 << 5) 
  227 #define FATTR_FH        (1 << 6) 
  228 #define FATTR_ATIME_NOW (1 << 7) 
  229 #define FATTR_MTIME_NOW (1 << 8) 
  230 #define FATTR_LOCKOWNER (1 << 9) 
  231 #define FATTR_CTIME     (1 << 10) 
  244 #define FOPEN_DIRECT_IO         (1 << 0) 
  245 #define FOPEN_KEEP_CACHE        (1 << 1) 
  246 #define FOPEN_NONSEEKABLE       (1 << 2) 
  247 #define FOPEN_CACHE_DIR         (1 << 3) 
  248 #define FOPEN_STREAM            (1 << 4) 
  249 #define FOPEN_NOFLUSH           (1 << 5) 
  250 #define FOPEN_PARALLEL_DIRECT_WRITES    (1 << 6) 
  281 #define FUSE_ASYNC_READ         (1 << 0) 
  282 #define FUSE_POSIX_LOCKS        (1 << 1) 
  283 #define FUSE_FILE_OPS           (1 << 2) 
  284 #define FUSE_ATOMIC_O_TRUNC     (1 << 3) 
  285 #define FUSE_EXPORT_SUPPORT     (1 << 4) 
  286 #define FUSE_BIG_WRITES         (1 << 5) 
  287 #define FUSE_DONT_MASK          (1 << 6) 
  288 #define FUSE_SPLICE_WRITE       (1 << 7) 
  289 #define FUSE_SPLICE_MOVE        (1 << 8) 
  290 #define FUSE_SPLICE_READ        (1 << 9) 
  291 #define FUSE_FLOCK_LOCKS        (1 << 10) 
  292 #define FUSE_HAS_IOCTL_DIR      (1 << 11) 
  293 #define FUSE_AUTO_INVAL_DATA    (1 << 12) 
  294 #define FUSE_DO_READDIRPLUS     (1 << 13) 
  295 #define FUSE_READDIRPLUS_AUTO   (1 << 14) 
  296 #define FUSE_ASYNC_DIO          (1 << 15) 
  297 #define FUSE_WRITEBACK_CACHE    (1 << 16) 
  298 #define FUSE_NO_OPEN_SUPPORT    (1 << 17) 
  299 #define FUSE_PARALLEL_DIROPS    (1 << 18) 
  300 #define FUSE_HANDLE_KILLPRIV    (1 << 19) 
  301 #define FUSE_POSIX_ACL          (1 << 20) 
  302 #define FUSE_ABORT_ERROR        (1 << 21) 
  303 #define FUSE_MAX_PAGES          (1 << 22) 
  304 #define FUSE_CACHE_SYMLINKS     (1 << 23) 
  305 #define FUSE_NO_OPENDIR_SUPPORT (1 << 24) 
  306 #define FUSE_EXPLICIT_INVAL_DATA (1 << 25) 
  307 #define FUSE_MAP_ALIGNMENT      (1 << 26) 
  308 #define FUSE_SUBMOUNTS          (1 << 27) 
  309 #define FUSE_HANDLE_KILLPRIV_V2 (1 << 28) 
  310 #define FUSE_SETXATTR_EXT       (1 << 29) 
  311 #define FUSE_INIT_EXT           (1 << 30) 
  312 #define FUSE_INIT_RESERVED      (1 << 31) 
  314 #define FUSE_SECURITY_CTX       (1ULL << 32) 
  315 #define FUSE_HAS_INODE_DAX      (1ULL << 33) 
  322 #define CUSE_UNRESTRICTED_IOCTL (1 << 0) 
  327 #define FUSE_RELEASE_FLUSH      (1 << 0) 
  328 #define FUSE_RELEASE_FLOCK_UNLOCK       (1 << 1) 
  333 #define FUSE_GETATTR_FH         (1 << 0) 
  338 #define FUSE_LK_FLOCK           (1 << 0) 
  347 #define FUSE_WRITE_CACHE        (1 << 0) 
  348 #define FUSE_WRITE_LOCKOWNER    (1 << 1) 
  349 #define FUSE_WRITE_KILL_PRIV    (1 << 2) 
  354 #define FUSE_READ_LOCKOWNER     (1 << 1) 
  368 #define FUSE_IOCTL_COMPAT       (1 << 0) 
  369 #define FUSE_IOCTL_UNRESTRICTED (1 << 1) 
  370 #define FUSE_IOCTL_RETRY        (1 << 2) 
  371 #define FUSE_IOCTL_32BIT        (1 << 3) 
  372 #define FUSE_IOCTL_DIR          (1 << 4) 
  373 #define FUSE_IOCTL_COMPAT_X32   (1 << 5) 
  375 #define FUSE_IOCTL_MAX_IOV      256 
  382 #define FUSE_POLL_SCHEDULE_NOTIFY (1 << 0) 
  389 #define FUSE_FSYNC_FDATASYNC    (1 << 0) 
  395 #define FUSE_EXPIRE_ONLY                (1 << 0) 
  419         FUSE_REMOVEXATTR        = 24,
 
  424         FUSE_RELEASEDIR         = 29,
 
  436         FUSE_NOTIFY_REPLY       = 41,
 
  437         FUSE_BATCH_FORGET       = 42,
 
  439         FUSE_READDIRPLUS        = 44,
 
  442         FUSE_COPY_FILE_RANGE    = 47,
 
  448 enum fuse_notify_code {
 
  449         FUSE_NOTIFY_POLL   = 1,
 
  450         FUSE_NOTIFY_INVAL_INODE = 2,
 
  451         FUSE_NOTIFY_INVAL_ENTRY = 3,
 
  452         FUSE_NOTIFY_STORE = 4,
 
  453         FUSE_NOTIFY_RETRIEVE = 5,
 
  454         FUSE_NOTIFY_DELETE = 6,
 
  459 #define FUSE_MIN_READ_BUFFER 8192 
  461 #define FUSE_COMPAT_ENTRY_OUT_SIZE 120 
  463 struct fuse_entry_out {
 
  467         uint64_t        entry_valid;    
 
  469         uint32_t        entry_valid_nsec;
 
  470         uint32_t        attr_valid_nsec;
 
  471         struct fuse_attr attr;
 
  474 struct fuse_forget_in {
 
  478 struct fuse_forget_one {
 
  483 struct fuse_batch_forget_in {
 
  488 struct fuse_getattr_in {
 
  489         uint32_t        getattr_flags;
 
  494 #define FUSE_COMPAT_ATTR_OUT_SIZE 96 
  496 struct fuse_attr_out {
 
  498         uint32_t        attr_valid_nsec;
 
  500         struct fuse_attr attr;
 
  503 #define FUSE_COMPAT_MKNOD_IN_SIZE 8 
  505 struct fuse_mknod_in {
 
  512 struct fuse_mkdir_in {
 
  517 struct fuse_rename_in {
 
  521 struct fuse_rename2_in {
 
  527 struct fuse_link_in {
 
  531 struct fuse_setattr_in {
 
  550 struct fuse_open_in {
 
  555 struct fuse_create_in {
 
  562 struct fuse_open_out {
 
  568 struct fuse_release_in {
 
  571         uint32_t        release_flags;
 
  575 struct fuse_flush_in {
 
  582 struct fuse_read_in {
 
  592 #define FUSE_COMPAT_WRITE_IN_SIZE 24 
  594 struct fuse_write_in {
 
  598         uint32_t        write_flags;
 
  604 struct fuse_write_out {
 
  609 #define FUSE_COMPAT_STATFS_SIZE 48 
  611 struct fuse_statfs_out {
 
  612         struct fuse_kstatfs st;
 
  615 struct fuse_fsync_in {
 
  617         uint32_t        fsync_flags;
 
  621 struct fuse_setxattr_in {
 
  626 struct fuse_getxattr_in {
 
  631 struct fuse_getxattr_out {
 
  639         struct fuse_file_lock lk;
 
  645         struct fuse_file_lock lk;
 
  648 struct fuse_access_in {
 
  653 struct fuse_init_in {
 
  656         uint32_t        max_readahead;
 
  662 #define FUSE_COMPAT_INIT_OUT_SIZE 8 
  663 #define FUSE_COMPAT_22_INIT_OUT_SIZE 24 
  665 struct fuse_init_out {
 
  668         uint32_t        max_readahead;
 
  670         uint16_t        max_background;
 
  671         uint16_t        congestion_threshold;
 
  675         uint16_t        map_alignment;
 
  680 #define CUSE_INIT_INFO_MAX 4096 
  682 struct cuse_init_in {
 
  689 struct cuse_init_out {
 
  701 struct fuse_interrupt_in {
 
  705 struct fuse_bmap_in {
 
  711 struct fuse_bmap_out {
 
  715 struct fuse_ioctl_in {
 
  724 struct fuse_ioctl_iovec {
 
  729 struct fuse_ioctl_out {
 
  736 struct fuse_poll_in {
 
  743 struct fuse_poll_out {
 
  748 struct fuse_notify_poll_wakeup_out {
 
  752 struct fuse_fallocate_in {
 
  760 struct fuse_in_header {
 
  771 struct fuse_out_header {
 
  785 #define FUSE_NAME_OFFSET offsetof(struct fuse_dirent, name) 
  786 #define FUSE_DIRENT_ALIGN(x) \ 
  787         (((x) + sizeof(uint64_t) - 1) & ~(sizeof(uint64_t) - 1)) 
  788 #define FUSE_DIRENT_SIZE(d) \ 
  789         FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET + (d)->namelen) 
  791 struct fuse_direntplus {
 
  792         struct fuse_entry_out entry_out;
 
  793         struct fuse_dirent dirent;
 
  796 #define FUSE_NAME_OFFSET_DIRENTPLUS \ 
  797         offsetof(struct fuse_direntplus, dirent.name) 
  798 #define FUSE_DIRENTPLUS_SIZE(d) \ 
  799         FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET_DIRENTPLUS + (d)->dirent.namelen) 
  801 struct fuse_notify_inval_inode_out {
 
  807 struct fuse_notify_inval_entry_out {
 
  813 struct fuse_notify_delete_out {
 
  820 struct fuse_notify_store_out {
 
  827 struct fuse_notify_retrieve_out {
 
  828         uint64_t        notify_unique;
 
  836 struct fuse_notify_retrieve_in {
 
  846 #define FUSE_DEV_IOC_CLONE      _IOR(229, 0, uint32_t) 
  848 struct fuse_lseek_in {
 
  855 struct fuse_lseek_out {
 
  859 struct fuse_copy_file_range_in {