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) 
  242 #define FOPEN_DIRECT_IO         (1 << 0) 
  243 #define FOPEN_KEEP_CACHE        (1 << 1) 
  244 #define FOPEN_NONSEEKABLE       (1 << 2) 
  245 #define FOPEN_CACHE_DIR         (1 << 3) 
  246 #define FOPEN_STREAM            (1 << 4) 
  278 #define FUSE_ASYNC_READ         (1 << 0) 
  279 #define FUSE_POSIX_LOCKS        (1 << 1) 
  280 #define FUSE_FILE_OPS           (1 << 2) 
  281 #define FUSE_ATOMIC_O_TRUNC     (1 << 3) 
  282 #define FUSE_EXPORT_SUPPORT     (1 << 4) 
  283 #define FUSE_BIG_WRITES         (1 << 5) 
  284 #define FUSE_DONT_MASK          (1 << 6) 
  285 #define FUSE_SPLICE_WRITE       (1 << 7) 
  286 #define FUSE_SPLICE_MOVE        (1 << 8) 
  287 #define FUSE_SPLICE_READ        (1 << 9) 
  288 #define FUSE_FLOCK_LOCKS        (1 << 10) 
  289 #define FUSE_HAS_IOCTL_DIR      (1 << 11) 
  290 #define FUSE_AUTO_INVAL_DATA    (1 << 12) 
  291 #define FUSE_DO_READDIRPLUS     (1 << 13) 
  292 #define FUSE_READDIRPLUS_AUTO   (1 << 14) 
  293 #define FUSE_ASYNC_DIO          (1 << 15) 
  294 #define FUSE_WRITEBACK_CACHE    (1 << 16) 
  295 #define FUSE_NO_OPEN_SUPPORT    (1 << 17) 
  296 #define FUSE_PARALLEL_DIROPS    (1 << 18) 
  297 #define FUSE_HANDLE_KILLPRIV    (1 << 19) 
  298 #define FUSE_POSIX_ACL          (1 << 20) 
  299 #define FUSE_ABORT_ERROR        (1 << 21) 
  300 #define FUSE_MAX_PAGES          (1 << 22) 
  301 #define FUSE_CACHE_SYMLINKS     (1 << 23) 
  302 #define FUSE_NO_OPENDIR_SUPPORT (1 << 24) 
  303 #define FUSE_EXPLICIT_INVAL_DATA (1 << 25) 
  310 #define CUSE_UNRESTRICTED_IOCTL (1 << 0) 
  315 #define FUSE_RELEASE_FLUSH      (1 << 0) 
  316 #define FUSE_RELEASE_FLOCK_UNLOCK       (1 << 1) 
  321 #define FUSE_GETATTR_FH         (1 << 0) 
  326 #define FUSE_LK_FLOCK           (1 << 0) 
  335 #define FUSE_WRITE_CACHE        (1 << 0) 
  336 #define FUSE_WRITE_LOCKOWNER    (1 << 1) 
  337 #define FUSE_WRITE_KILL_PRIV    (1 << 2) 
  342 #define FUSE_READ_LOCKOWNER     (1 << 1) 
  356 #define FUSE_IOCTL_COMPAT       (1 << 0) 
  357 #define FUSE_IOCTL_UNRESTRICTED (1 << 1) 
  358 #define FUSE_IOCTL_RETRY        (1 << 2) 
  359 #define FUSE_IOCTL_32BIT        (1 << 3) 
  360 #define FUSE_IOCTL_DIR          (1 << 4) 
  361 #define FUSE_IOCTL_COMPAT_X32   (1 << 5) 
  363 #define FUSE_IOCTL_MAX_IOV      256 
  370 #define FUSE_POLL_SCHEDULE_NOTIFY (1 << 0) 
  377 #define FUSE_FSYNC_FDATASYNC    (1 << 0) 
  401         FUSE_REMOVEXATTR        = 24,
 
  406         FUSE_RELEASEDIR         = 29,
 
  418         FUSE_NOTIFY_REPLY       = 41,
 
  419         FUSE_BATCH_FORGET       = 42,
 
  421         FUSE_READDIRPLUS        = 44,
 
  424         FUSE_COPY_FILE_RANGE    = 47,
 
  430 enum fuse_notify_code {
 
  431         FUSE_NOTIFY_POLL   = 1,
 
  432         FUSE_NOTIFY_INVAL_INODE = 2,
 
  433         FUSE_NOTIFY_INVAL_ENTRY = 3,
 
  434         FUSE_NOTIFY_STORE = 4,
 
  435         FUSE_NOTIFY_RETRIEVE = 5,
 
  436         FUSE_NOTIFY_DELETE = 6,
 
  441 #define FUSE_MIN_READ_BUFFER 8192 
  443 #define FUSE_COMPAT_ENTRY_OUT_SIZE 120 
  445 struct fuse_entry_out {
 
  449         uint64_t        entry_valid;    
 
  451         uint32_t        entry_valid_nsec;
 
  452         uint32_t        attr_valid_nsec;
 
  453         struct fuse_attr attr;
 
  456 struct fuse_forget_in {
 
  460 struct fuse_forget_one {
 
  465 struct fuse_batch_forget_in {
 
  470 struct fuse_getattr_in {
 
  471         uint32_t        getattr_flags;
 
  476 #define FUSE_COMPAT_ATTR_OUT_SIZE 96 
  478 struct fuse_attr_out {
 
  480         uint32_t        attr_valid_nsec;
 
  482         struct fuse_attr attr;
 
  485 #define FUSE_COMPAT_MKNOD_IN_SIZE 8 
  487 struct fuse_mknod_in {
 
  494 struct fuse_mkdir_in {
 
  499 struct fuse_rename_in {
 
  503 struct fuse_rename2_in {
 
  509 struct fuse_link_in {
 
  513 struct fuse_setattr_in {
 
  532 struct fuse_open_in {
 
  537 struct fuse_create_in {
 
  544 struct fuse_open_out {
 
  550 struct fuse_release_in {
 
  553         uint32_t        release_flags;
 
  557 struct fuse_flush_in {
 
  564 struct fuse_read_in {
 
  574 #define FUSE_COMPAT_WRITE_IN_SIZE 24 
  576 struct fuse_write_in {
 
  580         uint32_t        write_flags;
 
  586 struct fuse_write_out {
 
  591 #define FUSE_COMPAT_STATFS_SIZE 48 
  593 struct fuse_statfs_out {
 
  594         struct fuse_kstatfs st;
 
  597 struct fuse_fsync_in {
 
  599         uint32_t        fsync_flags;
 
  603 struct fuse_setxattr_in {
 
  608 struct fuse_getxattr_in {
 
  613 struct fuse_getxattr_out {
 
  621         struct fuse_file_lock lk;
 
  627         struct fuse_file_lock lk;
 
  630 struct fuse_access_in {
 
  635 struct fuse_init_in {
 
  638         uint32_t        max_readahead;
 
  642 #define FUSE_COMPAT_INIT_OUT_SIZE 8 
  643 #define FUSE_COMPAT_22_INIT_OUT_SIZE 24 
  645 struct fuse_init_out {
 
  648         uint32_t        max_readahead;
 
  650         uint16_t        max_background;
 
  651         uint16_t        congestion_threshold;
 
  659 #define CUSE_INIT_INFO_MAX 4096 
  661 struct cuse_init_in {
 
  668 struct cuse_init_out {
 
  680 struct fuse_interrupt_in {
 
  684 struct fuse_bmap_in {
 
  690 struct fuse_bmap_out {
 
  694 struct fuse_ioctl_in {
 
  703 struct fuse_ioctl_iovec {
 
  708 struct fuse_ioctl_out {
 
  715 struct fuse_poll_in {
 
  722 struct fuse_poll_out {
 
  727 struct fuse_notify_poll_wakeup_out {
 
  731 struct fuse_fallocate_in {
 
  739 struct fuse_in_header {
 
  750 struct fuse_out_header {
 
  764 #define FUSE_NAME_OFFSET offsetof(struct fuse_dirent, name) 
  765 #define FUSE_DIRENT_ALIGN(x) \ 
  766         (((x) + sizeof(uint64_t) - 1) & ~(sizeof(uint64_t) - 1)) 
  767 #define FUSE_DIRENT_SIZE(d) \ 
  768         FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET + (d)->namelen) 
  770 struct fuse_direntplus {
 
  771         struct fuse_entry_out entry_out;
 
  772         struct fuse_dirent dirent;
 
  775 #define FUSE_NAME_OFFSET_DIRENTPLUS \ 
  776         offsetof(struct fuse_direntplus, dirent.name) 
  777 #define FUSE_DIRENTPLUS_SIZE(d) \ 
  778         FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET_DIRENTPLUS + (d)->dirent.namelen) 
  780 struct fuse_notify_inval_inode_out {
 
  786 struct fuse_notify_inval_entry_out {
 
  792 struct fuse_notify_delete_out {
 
  799 struct fuse_notify_store_out {
 
  806 struct fuse_notify_retrieve_out {
 
  807         uint64_t        notify_unique;
 
  815 struct fuse_notify_retrieve_in {
 
  825 #define FUSE_DEV_IOC_CLONE      _IOR(229, 0, uint32_t) 
  827 struct fuse_lseek_in {
 
  834 struct fuse_lseek_out {
 
  838 struct fuse_copy_file_range_in {