1655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng/****************************************************************************
2655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ****************************************************************************
3655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***
4655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   This header was automatically generated from a Linux kernel header
5655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   of the same name, to make information necessary for userspace to
6655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   call into the kernel available to libc.  It contains only constants,
7655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   structures, and macros generated from the original header, and thus,
8655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   contains no copyrightable information.
9655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***
10655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   To edit the content of this header, modify the corresponding
11655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   source file (e.g. under external/kernel-headers/original/) then
12655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   run bionic/libc/kernel/tools/update_all.py
13655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***
14655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   Any manual change here will be lost the next time this script will
15655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   be run. You've been warned!
16655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***
17655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ****************************************************************************
18655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ****************************************************************************/
19655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#ifndef _LINUX_FUSE_H
20655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define _LINUX_FUSE_H
21655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#include <stdint.h>
22655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FUSE_KERNEL_VERSION 7
236a9755d20a995756487bb1aafb7e954f4fd868a7Christopher Ferris#define FUSE_KERNEL_MINOR_VERSION 26
24655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FUSE_ROOT_ID 1
25655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_attr {
26d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t ino;
27d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t size;
28d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t blocks;
29d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t atime;
30d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t mtime;
31d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t ctime;
32d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t atimensec;
33d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t mtimensec;
34d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t ctimensec;
35d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t mode;
36d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t nlink;
37d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t uid;
38d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t gid;
39d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t rdev;
40d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t blksize;
41d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t padding;
42655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
43655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_kstatfs {
44d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t blocks;
45d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t bfree;
46d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t bavail;
47d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t files;
48d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t ffree;
49d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t bsize;
50d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t namelen;
51d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t frsize;
52d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t padding;
53d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t spare[6];
54655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
55655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_file_lock {
56d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t start;
57d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t end;
58d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t type;
59d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t pid;
60655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
61655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FATTR_MODE (1 << 0)
62655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FATTR_UID (1 << 1)
63655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FATTR_GID (1 << 2)
64655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FATTR_SIZE (1 << 3)
65655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FATTR_ATIME (1 << 4)
66655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FATTR_MTIME (1 << 5)
67655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FATTR_FH (1 << 6)
68655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FATTR_ATIME_NOW (1 << 7)
69655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FATTR_MTIME_NOW (1 << 8)
70655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FATTR_LOCKOWNER (1 << 9)
71ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferris#define FATTR_CTIME (1 << 10)
72655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FOPEN_DIRECT_IO (1 << 0)
73655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FOPEN_KEEP_CACHE (1 << 1)
74655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FOPEN_NONSEEKABLE (1 << 2)
75ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferris#define FUSE_ASYNC_READ (1 << 0)
76655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FUSE_POSIX_LOCKS (1 << 1)
77655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FUSE_FILE_OPS (1 << 2)
78655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FUSE_ATOMIC_O_TRUNC (1 << 3)
79ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferris#define FUSE_EXPORT_SUPPORT (1 << 4)
80655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FUSE_BIG_WRITES (1 << 5)
81655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FUSE_DONT_MASK (1 << 6)
82655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FUSE_SPLICE_WRITE (1 << 7)
83ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferris#define FUSE_SPLICE_MOVE (1 << 8)
84655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FUSE_SPLICE_READ (1 << 9)
85655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FUSE_FLOCK_LOCKS (1 << 10)
86655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FUSE_HAS_IOCTL_DIR (1 << 11)
87ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferris#define FUSE_AUTO_INVAL_DATA (1 << 12)
88655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FUSE_DO_READDIRPLUS (1 << 13)
89655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FUSE_READDIRPLUS_AUTO (1 << 14)
90655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FUSE_ASYNC_DIO (1 << 15)
91ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferris#define FUSE_WRITEBACK_CACHE (1 << 16)
92ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferris#define FUSE_NO_OPEN_SUPPORT (1 << 17)
93106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#define FUSE_PARALLEL_DIROPS (1 << 18)
946a9755d20a995756487bb1aafb7e954f4fd868a7Christopher Ferris#define FUSE_HANDLE_KILLPRIV (1 << 19)
956a9755d20a995756487bb1aafb7e954f4fd868a7Christopher Ferris#define FUSE_POSIX_ACL (1 << 20)
966a9755d20a995756487bb1aafb7e954f4fd868a7Christopher Ferris#define CUSE_UNRESTRICTED_IOCTL (1 << 0)
97106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#define FUSE_RELEASE_FLUSH (1 << 0)
98655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FUSE_RELEASE_FLOCK_UNLOCK (1 << 1)
99655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FUSE_GETATTR_FH (1 << 0)
100655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FUSE_LK_FLOCK (1 << 0)
101106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#define FUSE_WRITE_CACHE (1 << 0)
102655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FUSE_WRITE_LOCKOWNER (1 << 1)
103655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FUSE_READ_LOCKOWNER (1 << 1)
104655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FUSE_IOCTL_COMPAT (1 << 0)
105106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#define FUSE_IOCTL_UNRESTRICTED (1 << 1)
106655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FUSE_IOCTL_RETRY (1 << 2)
107655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FUSE_IOCTL_32BIT (1 << 3)
108655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FUSE_IOCTL_DIR (1 << 4)
109106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#define FUSE_IOCTL_MAX_IOV 256
110655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FUSE_POLL_SCHEDULE_NOTIFY (1 << 0)
111655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengenum fuse_opcode {
112d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_LOOKUP = 1,
113106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  FUSE_FORGET = 2,
114d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_GETATTR = 3,
115d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_SETATTR = 4,
116d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_READLINK = 5,
117106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  FUSE_SYMLINK = 6,
118d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_MKNOD = 8,
119d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_MKDIR = 9,
120d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_UNLINK = 10,
121106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  FUSE_RMDIR = 11,
122d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_RENAME = 12,
123d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_LINK = 13,
124d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_OPEN = 14,
125106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  FUSE_READ = 15,
126d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_WRITE = 16,
127d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_STATFS = 17,
128d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_RELEASE = 18,
129106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  FUSE_FSYNC = 20,
130d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_SETXATTR = 21,
131d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_GETXATTR = 22,
132d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_LISTXATTR = 23,
133106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  FUSE_REMOVEXATTR = 24,
134d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_FLUSH = 25,
135d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_INIT = 26,
136d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_OPENDIR = 27,
137106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  FUSE_READDIR = 28,
138d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_RELEASEDIR = 29,
139d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_FSYNCDIR = 30,
140d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_GETLK = 31,
141106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  FUSE_SETLK = 32,
142d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_SETLKW = 33,
143d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_ACCESS = 34,
144d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_CREATE = 35,
145106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  FUSE_INTERRUPT = 36,
146d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_BMAP = 37,
147d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_DESTROY = 38,
148d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_IOCTL = 39,
149106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  FUSE_POLL = 40,
150d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_NOTIFY_REPLY = 41,
151d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_BATCH_FORGET = 42,
152d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_FALLOCATE = 43,
153106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  FUSE_READDIRPLUS = 44,
154d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_RENAME2 = 45,
155106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  FUSE_LSEEK = 46,
156d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  CUSE_INIT = 4096,
157655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
158655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengenum fuse_notify_code {
159d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_NOTIFY_POLL = 1,
160d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_NOTIFY_INVAL_INODE = 2,
161d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_NOTIFY_INVAL_ENTRY = 3,
162d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_NOTIFY_STORE = 4,
163d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_NOTIFY_RETRIEVE = 5,
164d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_NOTIFY_DELETE = 6,
165d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  FUSE_NOTIFY_CODE_MAX,
166655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
167655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FUSE_MIN_READ_BUFFER 8192
168655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FUSE_COMPAT_ENTRY_OUT_SIZE 120
169655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_entry_out {
170d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t nodeid;
171d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t generation;
172d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t entry_valid;
173d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t attr_valid;
174d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t entry_valid_nsec;
175d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t attr_valid_nsec;
176d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct fuse_attr attr;
177655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
178655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_forget_in {
179d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t nlookup;
180655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
181655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_forget_one {
182d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t nodeid;
183d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t nlookup;
184655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
185655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_batch_forget_in {
186d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t count;
187d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t dummy;
188655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
189655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_getattr_in {
190d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t getattr_flags;
191d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t dummy;
192d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t fh;
193655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
194655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FUSE_COMPAT_ATTR_OUT_SIZE 96
195655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_attr_out {
196d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t attr_valid;
197d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t attr_valid_nsec;
198d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t dummy;
199d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct fuse_attr attr;
200655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
201655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FUSE_COMPAT_MKNOD_IN_SIZE 8
202655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_mknod_in {
203d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t mode;
204d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t rdev;
205d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t umask;
206d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t padding;
207655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
208655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_mkdir_in {
209d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t mode;
210d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t umask;
211655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
212655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_rename_in {
213d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t newdir;
214655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
215ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferrisstruct fuse_rename2_in {
216d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t newdir;
217d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t flags;
218d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t padding;
219ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferris};
220655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_link_in {
221d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t oldnodeid;
222655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
223ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferrisstruct fuse_setattr_in {
224d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t valid;
225d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t padding;
226d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t fh;
227d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t size;
228d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t lock_owner;
229d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t atime;
230d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t mtime;
231d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t ctime;
232d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t atimensec;
233d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t mtimensec;
234d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t ctimensec;
235d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t mode;
236d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t unused4;
237d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t uid;
238d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t gid;
239d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t unused5;
240655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
241655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_open_in {
242d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t flags;
243d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t unused;
244655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
245655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_create_in {
246d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t flags;
247d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t mode;
248d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t umask;
249d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t padding;
250655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
251ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferrisstruct fuse_open_out {
252d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t fh;
253d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t open_flags;
254d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t padding;
255ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferris};
256655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_release_in {
257d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t fh;
258d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t flags;
259d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t release_flags;
260d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t lock_owner;
261655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
262655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_flush_in {
263d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t fh;
264d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t unused;
265d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t padding;
266d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t lock_owner;
267ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferris};
268655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_read_in {
269d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t fh;
270d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t offset;
271d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t size;
272d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t read_flags;
273d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t lock_owner;
274d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t flags;
275d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t padding;
276655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
277655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FUSE_COMPAT_WRITE_IN_SIZE 24
278655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_write_in {
279d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t fh;
280d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t offset;
281d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t size;
282d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t write_flags;
283d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t lock_owner;
284d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t flags;
285d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t padding;
286655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
287ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferrisstruct fuse_write_out {
288d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t size;
289d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t padding;
290655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
291ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferris#define FUSE_COMPAT_STATFS_SIZE 48
292655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_statfs_out {
293d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct fuse_kstatfs st;
294655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
295ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferrisstruct fuse_fsync_in {
296d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t fh;
297d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t fsync_flags;
298d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t padding;
299ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferris};
300655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_setxattr_in {
301d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t size;
302d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t flags;
303ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferris};
304655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_getxattr_in {
305d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t size;
306d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t padding;
307ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferris};
308655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_getxattr_out {
309d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t size;
310d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t padding;
311ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferris};
312655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_lk_in {
313d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t fh;
314d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t owner;
315d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct fuse_file_lock lk;
316d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t lk_flags;
317d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t padding;
318655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
319ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferrisstruct fuse_lk_out {
320d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct fuse_file_lock lk;
321655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
322655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_access_in {
323d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t mask;
324d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t padding;
325655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
326655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_init_in {
327d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t major;
328d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t minor;
329d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t max_readahead;
330d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t flags;
331ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferris};
332ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferris#define FUSE_COMPAT_INIT_OUT_SIZE 8
333ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferris#define FUSE_COMPAT_22_INIT_OUT_SIZE 24
334655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_init_out {
335d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t major;
336d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t minor;
337d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t max_readahead;
338d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t flags;
339d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint16_t max_background;
340d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint16_t congestion_threshold;
341d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t max_write;
342d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t time_gran;
343d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t unused[9];
344655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
345655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define CUSE_INIT_INFO_MAX 4096
346655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct cuse_init_in {
347d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t major;
348d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t minor;
349d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t unused;
350d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t flags;
351ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferris};
352655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct cuse_init_out {
353d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t major;
354d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t minor;
355d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t unused;
356d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t flags;
357d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t max_read;
358d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t max_write;
359d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t dev_major;
360d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t dev_minor;
361d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t spare[10];
362655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
363ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferrisstruct fuse_interrupt_in {
364d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t unique;
365655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
366655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_bmap_in {
367d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t block;
368d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t blocksize;
369d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t padding;
370655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
371ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferrisstruct fuse_bmap_out {
372d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t block;
373655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
374655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_ioctl_in {
375d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t fh;
376d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t flags;
377d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t cmd;
378d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t arg;
379d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t in_size;
380d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t out_size;
381655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
382655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_ioctl_iovec {
383d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t base;
384d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t len;
385655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
386655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_ioctl_out {
387d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  int32_t result;
388d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t flags;
389d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t in_iovs;
390d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t out_iovs;
391ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferris};
392655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_poll_in {
393d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t fh;
394d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t kh;
395d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t flags;
396d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t events;
397655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
398655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_poll_out {
399d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t revents;
400d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t padding;
401655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
402655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_notify_poll_wakeup_out {
403d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t kh;
404655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
405655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_fallocate_in {
406d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t fh;
407d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t offset;
408d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t length;
409d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t mode;
410d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t padding;
411ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferris};
412655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_in_header {
413d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t len;
414d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t opcode;
415d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t unique;
416d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t nodeid;
417d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t uid;
418d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t gid;
419d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t pid;
420d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t padding;
421655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
422655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_out_header {
423d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t len;
424d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  int32_t error;
425d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t unique;
426655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
427ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferrisstruct fuse_dirent {
428d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t ino;
429d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t off;
430d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t namelen;
431d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t type;
432d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  char name[];
433655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
434655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define FUSE_NAME_OFFSET offsetof(struct fuse_dirent, name)
435d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define FUSE_DIRENT_ALIGN(x) (((x) + sizeof(uint64_t) - 1) & ~(sizeof(uint64_t) - 1))
436d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define FUSE_DIRENT_SIZE(d) FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET + (d)->namelen)
437655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_direntplus {
438d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct fuse_entry_out entry_out;
439d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct fuse_dirent dirent;
440655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
441d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define FUSE_NAME_OFFSET_DIRENTPLUS offsetof(struct fuse_direntplus, dirent.name)
442d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define FUSE_DIRENTPLUS_SIZE(d) FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET_DIRENTPLUS + (d)->dirent.namelen)
443ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferrisstruct fuse_notify_inval_inode_out {
444d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t ino;
445d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  int64_t off;
446d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  int64_t len;
447ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferris};
448655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_notify_inval_entry_out {
449d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t parent;
450d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t namelen;
451d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t padding;
452655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
453655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_notify_delete_out {
454d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t parent;
455d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t child;
456d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t namelen;
457d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t padding;
458655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
459ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferrisstruct fuse_notify_store_out {
460d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t nodeid;
461d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t offset;
462d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t size;
463d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t padding;
464655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
465655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_notify_retrieve_out {
466d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t notify_unique;
467d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t nodeid;
468d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t offset;
469d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t size;
470d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t padding;
471ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferris};
472655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct fuse_notify_retrieve_in {
473d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t dummy1;
474d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t offset;
475d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t size;
476d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint32_t dummy2;
477d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t dummy3;
478d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  uint64_t dummy4;
479ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferris};
48005d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define FUSE_DEV_IOC_CLONE _IOR(229, 0, uint32_t)
481106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferrisstruct fuse_lseek_in {
482106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  uint64_t fh;
483106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  uint64_t offset;
484106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  uint32_t whence;
485106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  uint32_t padding;
486106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris};
487106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferrisstruct fuse_lseek_out {
488106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  uint64_t offset;
489106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris};
490655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#endif
491