226#include <linux/types.h> 
  252#define FUSE_KERNEL_VERSION 7 
  255#define FUSE_KERNEL_MINOR_VERSION 40 
  258#define FUSE_ROOT_ID 1 
  300        uint16_t        __spare0[1];
 
  304        uint64_t        attributes_mask;
 
  305        struct fuse_sx_time     atime;
 
  306        struct fuse_sx_time     btime;
 
  307        struct fuse_sx_time     ctime;
 
  308        struct fuse_sx_time     mtime;
 
  313        uint64_t        __spare2[14];
 
  329struct fuse_file_lock {
 
  339#define FATTR_MODE      (1 << 0) 
  340#define FATTR_UID       (1 << 1) 
  341#define FATTR_GID       (1 << 2) 
  342#define FATTR_SIZE      (1 << 3) 
  343#define FATTR_ATIME     (1 << 4) 
  344#define FATTR_MTIME     (1 << 5) 
  345#define FATTR_FH        (1 << 6) 
  346#define FATTR_ATIME_NOW (1 << 7) 
  347#define FATTR_MTIME_NOW (1 << 8) 
  348#define FATTR_LOCKOWNER (1 << 9) 
  349#define FATTR_CTIME     (1 << 10) 
  350#define FATTR_KILL_SUIDGID      (1 << 11) 
  364#define FOPEN_DIRECT_IO         (1 << 0) 
  365#define FOPEN_KEEP_CACHE        (1 << 1) 
  366#define FOPEN_NONSEEKABLE       (1 << 2) 
  367#define FOPEN_CACHE_DIR         (1 << 3) 
  368#define FOPEN_STREAM            (1 << 4) 
  369#define FOPEN_NOFLUSH           (1 << 5) 
  370#define FOPEN_PARALLEL_DIRECT_WRITES    (1 << 6) 
  371#define FOPEN_PASSTHROUGH       (1 << 7) 
  425#define FUSE_ASYNC_READ         (1 << 0) 
  426#define FUSE_POSIX_LOCKS        (1 << 1) 
  427#define FUSE_FILE_OPS           (1 << 2) 
  428#define FUSE_ATOMIC_O_TRUNC     (1 << 3) 
  429#define FUSE_EXPORT_SUPPORT     (1 << 4) 
  430#define FUSE_BIG_WRITES         (1 << 5) 
  431#define FUSE_DONT_MASK          (1 << 6) 
  432#define FUSE_SPLICE_WRITE       (1 << 7) 
  433#define FUSE_SPLICE_MOVE        (1 << 8) 
  434#define FUSE_SPLICE_READ        (1 << 9) 
  435#define FUSE_FLOCK_LOCKS        (1 << 10) 
  436#define FUSE_HAS_IOCTL_DIR      (1 << 11) 
  437#define FUSE_AUTO_INVAL_DATA    (1 << 12) 
  438#define FUSE_DO_READDIRPLUS     (1 << 13) 
  439#define FUSE_READDIRPLUS_AUTO   (1 << 14) 
  440#define FUSE_ASYNC_DIO          (1 << 15) 
  441#define FUSE_WRITEBACK_CACHE    (1 << 16) 
  442#define FUSE_NO_OPEN_SUPPORT    (1 << 17) 
  443#define FUSE_PARALLEL_DIROPS    (1 << 18) 
  444#define FUSE_HANDLE_KILLPRIV    (1 << 19) 
  445#define FUSE_POSIX_ACL          (1 << 20) 
  446#define FUSE_ABORT_ERROR        (1 << 21) 
  447#define FUSE_MAX_PAGES          (1 << 22) 
  448#define FUSE_CACHE_SYMLINKS     (1 << 23) 
  449#define FUSE_NO_OPENDIR_SUPPORT (1 << 24) 
  450#define FUSE_EXPLICIT_INVAL_DATA (1 << 25) 
  451#define FUSE_MAP_ALIGNMENT      (1 << 26) 
  452#define FUSE_SUBMOUNTS          (1 << 27) 
  453#define FUSE_HANDLE_KILLPRIV_V2 (1 << 28) 
  454#define FUSE_SETXATTR_EXT       (1 << 29) 
  455#define FUSE_INIT_EXT           (1 << 30) 
  456#define FUSE_INIT_RESERVED      (1 << 31) 
  458#define FUSE_SECURITY_CTX       (1ULL << 32) 
  459#define FUSE_HAS_INODE_DAX      (1ULL << 33) 
  460#define FUSE_CREATE_SUPP_GROUP  (1ULL << 34) 
  461#define FUSE_HAS_EXPIRE_ONLY    (1ULL << 35) 
  462#define FUSE_DIRECT_IO_ALLOW_MMAP (1ULL << 36) 
  463#define FUSE_PASSTHROUGH        (1ULL << 37) 
  464#define FUSE_NO_EXPORT_SUPPORT  (1ULL << 38) 
  465#define FUSE_HAS_RESEND         (1ULL << 39) 
  468#define FUSE_DIRECT_IO_RELAX    FUSE_DIRECT_IO_ALLOW_MMAP 
  475#define CUSE_UNRESTRICTED_IOCTL (1 << 0) 
  480#define FUSE_RELEASE_FLUSH      (1 << 0) 
  481#define FUSE_RELEASE_FLOCK_UNLOCK       (1 << 1) 
  486#define FUSE_GETATTR_FH         (1 << 0) 
  491#define FUSE_LK_FLOCK           (1 << 0) 
  500#define FUSE_WRITE_CACHE        (1 << 0) 
  501#define FUSE_WRITE_LOCKOWNER    (1 << 1) 
  502#define FUSE_WRITE_KILL_SUIDGID (1 << 2) 
  505#define FUSE_WRITE_KILL_PRIV    FUSE_WRITE_KILL_SUIDGID 
  510#define FUSE_READ_LOCKOWNER     (1 << 1) 
  524#define FUSE_IOCTL_COMPAT       (1 << 0) 
  525#define FUSE_IOCTL_UNRESTRICTED (1 << 1) 
  526#define FUSE_IOCTL_RETRY        (1 << 2) 
  527#define FUSE_IOCTL_32BIT        (1 << 3) 
  528#define FUSE_IOCTL_DIR          (1 << 4) 
  529#define FUSE_IOCTL_COMPAT_X32   (1 << 5) 
  531#define FUSE_IOCTL_MAX_IOV      256 
  538#define FUSE_POLL_SCHEDULE_NOTIFY (1 << 0) 
  545#define FUSE_FSYNC_FDATASYNC    (1 << 0) 
  553#define FUSE_ATTR_SUBMOUNT      (1 << 0) 
  554#define FUSE_ATTR_DAX           (1 << 1) 
  560#define FUSE_OPEN_KILL_SUIDGID  (1 << 0) 
  566#define FUSE_SETXATTR_ACL_KILL_SGID     (1 << 0) 
  572#define FUSE_EXPIRE_ONLY                (1 << 0) 
  581        FUSE_MAX_NR_SECCTX      = 31,
 
  582        FUSE_EXT_GROUPS         = 32,
 
  607        FUSE_REMOVEXATTR        = 24,
 
  612        FUSE_RELEASEDIR         = 29,
 
  624        FUSE_NOTIFY_REPLY       = 41,
 
  625        FUSE_BATCH_FORGET       = 42,
 
  627        FUSE_READDIRPLUS        = 44,
 
  630        FUSE_COPY_FILE_RANGE    = 47,
 
  631        FUSE_SETUPMAPPING       = 48,
 
  632        FUSE_REMOVEMAPPING      = 49,
 
  641        CUSE_INIT_BSWAP_RESERVED        = 1048576,      
 
  642        FUSE_INIT_BSWAP_RESERVED        = 436207616,    
 
  645enum fuse_notify_code {
 
  646        FUSE_NOTIFY_POLL   = 1,
 
  647        FUSE_NOTIFY_INVAL_INODE = 2,
 
  648        FUSE_NOTIFY_INVAL_ENTRY = 3,
 
  649        FUSE_NOTIFY_STORE = 4,
 
  650        FUSE_NOTIFY_RETRIEVE = 5,
 
  651        FUSE_NOTIFY_DELETE = 6,
 
  652        FUSE_NOTIFY_RESEND = 7,
 
  653        FUSE_NOTIFY_CODE_MAX,
 
  657#define FUSE_MIN_READ_BUFFER 8192 
  659#define FUSE_COMPAT_ENTRY_OUT_SIZE 120 
  661struct fuse_entry_out {
 
  665        uint64_t        entry_valid;    
 
  667        uint32_t        entry_valid_nsec;
 
  668        uint32_t        attr_valid_nsec;
 
  669        struct fuse_attr attr;
 
  672struct fuse_forget_in {
 
  676struct fuse_forget_one {
 
  681struct fuse_batch_forget_in {
 
  686struct fuse_getattr_in {
 
  687        uint32_t        getattr_flags;
 
  692#define FUSE_COMPAT_ATTR_OUT_SIZE 96 
  694struct fuse_attr_out {
 
  696        uint32_t        attr_valid_nsec;
 
  698        struct fuse_attr attr;
 
  701struct fuse_statx_in {
 
  702        uint32_t        getattr_flags;
 
  709struct fuse_statx_out {
 
  711        uint32_t        attr_valid_nsec;
 
  714        struct fuse_statx stat;
 
  717#define FUSE_COMPAT_MKNOD_IN_SIZE 8 
  719struct fuse_mknod_in {
 
  726struct fuse_mkdir_in {
 
  731struct fuse_rename_in {
 
  735struct fuse_rename2_in {
 
  745struct fuse_setattr_in {
 
  769struct fuse_create_in {
 
  776struct fuse_open_out {
 
  782struct fuse_release_in {
 
  785        uint32_t        release_flags;
 
  789struct fuse_flush_in {
 
  806#define FUSE_COMPAT_WRITE_IN_SIZE 24 
  808struct fuse_write_in {
 
  812        uint32_t        write_flags;
 
  818struct fuse_write_out {
 
  823#define FUSE_COMPAT_STATFS_SIZE 48 
  825struct fuse_statfs_out {
 
  826        struct fuse_kstatfs st;
 
  829struct fuse_fsync_in {
 
  831        uint32_t        fsync_flags;
 
  835#define FUSE_COMPAT_SETXATTR_IN_SIZE 8 
  837struct fuse_setxattr_in {
 
  840        uint32_t        setxattr_flags;
 
  844struct fuse_getxattr_in {
 
  849struct fuse_getxattr_out {
 
  857        struct fuse_file_lock lk;
 
  863        struct fuse_file_lock lk;
 
  866struct fuse_access_in {
 
  874        uint32_t        max_readahead;
 
  880#define FUSE_COMPAT_INIT_OUT_SIZE 8 
  881#define FUSE_COMPAT_22_INIT_OUT_SIZE 24 
  883struct fuse_init_out {
 
  886        uint32_t        max_readahead;
 
  888        uint16_t        max_background;
 
  889        uint16_t        congestion_threshold;
 
  893        uint16_t        map_alignment;
 
  895        uint32_t        max_stack_depth;
 
  899#define CUSE_INIT_INFO_MAX 4096 
  908struct cuse_init_out {
 
  920struct fuse_interrupt_in {
 
  930struct fuse_bmap_out {
 
  934struct fuse_ioctl_in {
 
  943struct fuse_ioctl_iovec {
 
  948struct fuse_ioctl_out {
 
  962struct fuse_poll_out {
 
  967struct fuse_notify_poll_wakeup_out {
 
  971struct fuse_fallocate_in {
 
  985#define FUSE_UNIQUE_RESEND (1ULL << 63) 
  987struct fuse_in_header {
 
  995        uint16_t        total_extlen; 
 
  999struct fuse_out_header {
 
 1014#define FUSE_REC_ALIGN(x) \ 
 1015        (((x) + sizeof(uint64_t) - 1) & ~(sizeof(uint64_t) - 1)) 
 1017#define FUSE_NAME_OFFSET offsetof(struct fuse_dirent, name) 
 1018#define FUSE_DIRENT_ALIGN(x) FUSE_REC_ALIGN(x) 
 1019#define FUSE_DIRENT_SIZE(d) \ 
 1020        FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET + (d)->namelen) 
 1022struct fuse_direntplus {
 
 1023        struct fuse_entry_out entry_out;
 
 1024        struct fuse_dirent dirent;
 
 1027#define FUSE_NAME_OFFSET_DIRENTPLUS \ 
 1028        offsetof(struct fuse_direntplus, dirent.name) 
 1029#define FUSE_DIRENTPLUS_SIZE(d) \ 
 1030        FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET_DIRENTPLUS + (d)->dirent.namelen) 
 1032struct fuse_notify_inval_inode_out {
 
 1038struct fuse_notify_inval_entry_out {
 
 1044struct fuse_notify_delete_out {
 
 1051struct fuse_notify_store_out {
 
 1058struct fuse_notify_retrieve_out {
 
 1059        uint64_t        notify_unique;
 
 1067struct fuse_notify_retrieve_in {
 
 1076struct fuse_backing_map {
 
 1083#define FUSE_DEV_IOC_MAGIC              229 
 1084#define FUSE_DEV_IOC_CLONE              _IOR(FUSE_DEV_IOC_MAGIC, 0, uint32_t) 
 1085#define FUSE_DEV_IOC_BACKING_OPEN       _IOW(FUSE_DEV_IOC_MAGIC, 1, \ 
 1086                                             struct fuse_backing_map) 
 1087#define FUSE_DEV_IOC_BACKING_CLOSE      _IOW(FUSE_DEV_IOC_MAGIC, 2, uint32_t) 
 1089struct fuse_lseek_in {
 
 1096struct fuse_lseek_out {
 
 1100struct fuse_copy_file_range_in {
 
 1103        uint64_t        nodeid_out;
 
 1110#define FUSE_SETUPMAPPING_FLAG_WRITE (1ull << 0) 
 1111#define FUSE_SETUPMAPPING_FLAG_READ (1ull << 1) 
 1112struct fuse_setupmapping_in {
 
 1125struct fuse_removemapping_in {
 
 1130struct fuse_removemapping_one {
 
 1137#define FUSE_REMOVEMAPPING_MAX_ENTRY   \ 
 1138                (PAGE_SIZE / sizeof(struct fuse_removemapping_one)) 
 1140struct fuse_syncfs_in {
 
 1161struct fuse_secctx_header {