103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland/* 203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE: Filesystem in Userspace 303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland Copyright (C) 2001-2008 Miklos Szeredi <miklos@szeredi.hu> 403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland This program can be distributed under the terms of the GNU GPL. 603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland See the file COPYING. 703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland*/ 803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland/* 1003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * from the libfuse FAQ (and consistent with the Linux Kernel license): 1103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * 1203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * Under what conditions may I distribute a filesystem that uses the 1303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * raw kernel interface of FUSE? 1403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * 1503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * There are no restrictions whatsoever for using the raw kernel interface. 1603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * 1703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland */ 1803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 1903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland/* 2003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * This file defines the kernel interface of FUSE 2103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * 2203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * Protocol changelog: 2303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * 2403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * 7.9: 2503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * - new fuse_getattr_in input argument of GETATTR 2603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * - add lk_flags in fuse_lk_in 2703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * - add lock_owner field to fuse_setattr_in, fuse_read_in and fuse_write_in 2803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * - add blksize field to fuse_attr 2903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * - add file flags field to fuse_read_in and fuse_write_in 3003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * 3103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * 7.10 3203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * - add nonseekable open flag 3303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * 3403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * 7.11 3503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * - add IOCTL message 3603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * - add unsolicited notification support 3703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * - add POLL message and NOTIFY_POLL notification 3803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * 3903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * 7.12 4003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * - add umask flag to input argument of open, mknod and mkdir 4103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * - add notification messages for invalidation of inodes and 4203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * directory entries 4303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * 4403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * 7.13 4503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * - make max number of background requests and congestion threshold 4603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * tunables 4703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland */ 4803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 4903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#ifndef _LINUX_FUSE_H 5003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define _LINUX_FUSE_H 5103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 5203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#include <linux/types.h> 5303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 5403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland/* 5503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * Version negotiation: 5603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * 5703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * Both the kernel and userspace send the version they support in the 5803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * INIT request and reply respectively. 5903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * 6003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * If the major versions match then both shall use the smallest 6103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * of the two minor versions for communication. 6203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * 6303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * If the kernel supports a larger major version, then userspace shall 6403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * reply with the major version it supports, ignore the rest of the 6503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * INIT message and expect a new INIT message from the kernel with a 6603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * matching major version. 6703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * 6803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * If the library supports a larger major version, then it shall fall 6903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * back to the major protocol version sent by the kernel for 7003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * communication and reply with that major version (and an arbitrary 7103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * supported minor version). 7203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland */ 7303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 7403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland/** Version number of this interface */ 7503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FUSE_KERNEL_VERSION 7 7603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 7703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland/** Minor version number of this interface */ 7803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FUSE_KERNEL_MINOR_VERSION 13 7903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 8003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland/** The node ID of the root inode */ 8103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FUSE_ROOT_ID 1 8203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 8303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland/* Make sure all structures are padded to 64bit boundary, so 32bit 8403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland userspace works under 64bit kernels */ 8503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 8603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_attr { 8703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 ino; 8803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 size; 8903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 blocks; 9003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 atime; 9103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 mtime; 9203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 ctime; 9303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 atimensec; 9403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 mtimensec; 9503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 ctimensec; 9603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 mode; 9703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 nlink; 9803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 uid; 9903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 gid; 10003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 rdev; 10103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 blksize; 10203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 padding; 10303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 10403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 10503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_kstatfs { 10603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 blocks; 10703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 bfree; 10803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 bavail; 10903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 files; 11003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 ffree; 11103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 bsize; 11203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 namelen; 11303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 frsize; 11403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 padding; 11503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 spare[6]; 11603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 11703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 11803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_file_lock { 11903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 start; 12003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 end; 12103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 type; 12203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 pid; /* tgid */ 12303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 12403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 12503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland/** 12603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * Bitmasks for fuse_setattr_in.valid 12703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland */ 12803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FATTR_MODE (1 << 0) 12903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FATTR_UID (1 << 1) 13003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FATTR_GID (1 << 2) 13103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FATTR_SIZE (1 << 3) 13203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FATTR_ATIME (1 << 4) 13303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FATTR_MTIME (1 << 5) 13403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FATTR_FH (1 << 6) 13503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FATTR_ATIME_NOW (1 << 7) 13603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FATTR_MTIME_NOW (1 << 8) 13703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FATTR_LOCKOWNER (1 << 9) 13803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 13903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland/** 14003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * Flags returned by the OPEN request 14103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * 14203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * FOPEN_DIRECT_IO: bypass page cache for this open file 14303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * FOPEN_KEEP_CACHE: don't invalidate the data cache on open 14403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * FOPEN_NONSEEKABLE: the file is not seekable 14503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland */ 14603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FOPEN_DIRECT_IO (1 << 0) 14703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FOPEN_KEEP_CACHE (1 << 1) 14803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FOPEN_NONSEEKABLE (1 << 2) 14903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 15003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland/** 15103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * INIT request/reply flags 15203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * 15303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * FUSE_EXPORT_SUPPORT: filesystem handles lookups of "." and ".." 15403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * FUSE_DONT_MASK: don't apply umask to file mode on create operations 15503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland */ 15603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FUSE_ASYNC_READ (1 << 0) 15703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FUSE_POSIX_LOCKS (1 << 1) 15803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FUSE_FILE_OPS (1 << 2) 15903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FUSE_ATOMIC_O_TRUNC (1 << 3) 16003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FUSE_EXPORT_SUPPORT (1 << 4) 16103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FUSE_BIG_WRITES (1 << 5) 16203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FUSE_DONT_MASK (1 << 6) 16303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 16403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland/** 16503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * CUSE INIT request/reply flags 16603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * 16703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * CUSE_UNRESTRICTED_IOCTL: use unrestricted ioctl 16803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland */ 16903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define CUSE_UNRESTRICTED_IOCTL (1 << 0) 17003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 17103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland/** 17203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * Release flags 17303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland */ 17403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FUSE_RELEASE_FLUSH (1 << 0) 17503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 17603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland/** 17703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * Getattr flags 17803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland */ 17903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FUSE_GETATTR_FH (1 << 0) 18003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 18103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland/** 18203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * Lock flags 18303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland */ 18403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FUSE_LK_FLOCK (1 << 0) 18503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 18603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland/** 18703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * WRITE flags 18803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * 18903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * FUSE_WRITE_CACHE: delayed write from page cache, file handle is guessed 19003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * FUSE_WRITE_LOCKOWNER: lock_owner field is valid 19103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland */ 19203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FUSE_WRITE_CACHE (1 << 0) 19303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FUSE_WRITE_LOCKOWNER (1 << 1) 19403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 19503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland/** 19603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * Read flags 19703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland */ 19803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FUSE_READ_LOCKOWNER (1 << 1) 19903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 20003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland/** 20103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * Ioctl flags 20203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * 20303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * FUSE_IOCTL_COMPAT: 32bit compat ioctl on 64bit machine 20403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * FUSE_IOCTL_UNRESTRICTED: not restricted to well-formed ioctls, retry allowed 20503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * FUSE_IOCTL_RETRY: retry with new iovecs 20603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * 20703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * FUSE_IOCTL_MAX_IOV: maximum of in_iovecs + out_iovecs 20803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland */ 20903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FUSE_IOCTL_COMPAT (1 << 0) 21003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FUSE_IOCTL_UNRESTRICTED (1 << 1) 21103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FUSE_IOCTL_RETRY (1 << 2) 21203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 21303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FUSE_IOCTL_MAX_IOV 256 21403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 21503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland/** 21603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * Poll flags 21703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * 21803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland * FUSE_POLL_SCHEDULE_NOTIFY: request poll notify 21903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland */ 22003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FUSE_POLL_SCHEDULE_NOTIFY (1 << 0) 22103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 22203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandenum fuse_opcode { 22303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_LOOKUP = 1, 22403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_FORGET = 2, /* no reply */ 22503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_GETATTR = 3, 22603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_SETATTR = 4, 22703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_READLINK = 5, 22803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_SYMLINK = 6, 22903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_MKNOD = 8, 23003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_MKDIR = 9, 23103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_UNLINK = 10, 23203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_RMDIR = 11, 23303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_RENAME = 12, 23403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_LINK = 13, 23503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_OPEN = 14, 23603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_READ = 15, 23703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_WRITE = 16, 23803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_STATFS = 17, 23903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_RELEASE = 18, 24003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_FSYNC = 20, 24103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_SETXATTR = 21, 24203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_GETXATTR = 22, 24303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_LISTXATTR = 23, 24403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_REMOVEXATTR = 24, 24503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_FLUSH = 25, 24603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_INIT = 26, 24703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_OPENDIR = 27, 24803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_READDIR = 28, 24903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_RELEASEDIR = 29, 25003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_FSYNCDIR = 30, 25103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_GETLK = 31, 25203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_SETLK = 32, 25303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_SETLKW = 33, 25403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_ACCESS = 34, 25503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_CREATE = 35, 25603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_INTERRUPT = 36, 25703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_BMAP = 37, 25803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_DESTROY = 38, 25903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_IOCTL = 39, 26003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_POLL = 40, 26103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 26203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland /* CUSE specific operations */ 26303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland CUSE_INIT = 4096, 26403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 26503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 26603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandenum fuse_notify_code { 26703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_NOTIFY_POLL = 1, 26803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_NOTIFY_INVAL_INODE = 2, 26903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_NOTIFY_INVAL_ENTRY = 3, 27003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_NOTIFY_CODE_MAX, 27103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 27203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 27303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland/* The read buffer is required to be at least 8k, but may be much larger */ 27403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FUSE_MIN_READ_BUFFER 8192 27503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 27603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FUSE_COMPAT_ENTRY_OUT_SIZE 120 27703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 27803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_entry_out { 27903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 nodeid; /* Inode ID */ 28003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 generation; /* Inode generation: nodeid:gen must 28103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland be unique for the fs's lifetime */ 28203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 entry_valid; /* Cache timeout for the name */ 28303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 attr_valid; /* Cache timeout for the attributes */ 28403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 entry_valid_nsec; 28503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 attr_valid_nsec; 28603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland struct fuse_attr attr; 28703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 28803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 28903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_forget_in { 29003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 nlookup; 29103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 29203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 29303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_getattr_in { 29403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 getattr_flags; 29503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 dummy; 29603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 fh; 29703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 29803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 29903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FUSE_COMPAT_ATTR_OUT_SIZE 96 30003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 30103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_attr_out { 30203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 attr_valid; /* Cache timeout for the attributes */ 30303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 attr_valid_nsec; 30403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 dummy; 30503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland struct fuse_attr attr; 30603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 30703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 30803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FUSE_COMPAT_MKNOD_IN_SIZE 8 30903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 31003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_mknod_in { 31103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 mode; 31203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 rdev; 31303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 umask; 31403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 padding; 31503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 31603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 31703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_mkdir_in { 31803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 mode; 31903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 umask; 32003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 32103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 32203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_rename_in { 32303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 newdir; 32403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 32503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 32603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_link_in { 32703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 oldnodeid; 32803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 32903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 33003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_setattr_in { 33103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 valid; 33203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 padding; 33303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 fh; 33403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 size; 33503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 lock_owner; 33603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 atime; 33703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 mtime; 33803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 unused2; 33903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 atimensec; 34003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 mtimensec; 34103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 unused3; 34203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 mode; 34303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 unused4; 34403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 uid; 34503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 gid; 34603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 unused5; 34703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 34803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 34903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_open_in { 35003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 flags; 35103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 unused; 35203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 35303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 35403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_create_in { 35503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 flags; 35603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 mode; 35703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 umask; 35803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 padding; 35903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 36003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 36103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_open_out { 36203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 fh; 36303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 open_flags; 36403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 padding; 36503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 36603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 36703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_release_in { 36803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 fh; 36903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 flags; 37003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 release_flags; 37103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 lock_owner; 37203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 37303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 37403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_flush_in { 37503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 fh; 37603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 unused; 37703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 padding; 37803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 lock_owner; 37903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 38003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 38103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_read_in { 38203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 fh; 38303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 offset; 38403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 size; 38503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 read_flags; 38603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 lock_owner; 38703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 flags; 38803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 padding; 38903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 39003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 39103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FUSE_COMPAT_WRITE_IN_SIZE 24 39203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 39303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_write_in { 39403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 fh; 39503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 offset; 39603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 size; 39703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 write_flags; 39803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 lock_owner; 39903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 flags; 40003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 padding; 40103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 40203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 40303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_write_out { 40403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 size; 40503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 padding; 40603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 40703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 40803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FUSE_COMPAT_STATFS_SIZE 48 40903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 41003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_statfs_out { 41103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland struct fuse_kstatfs st; 41203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 41303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 41403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_fsync_in { 41503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 fh; 41603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 fsync_flags; 41703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 padding; 41803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 41903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 42003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_setxattr_in { 42103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 size; 42203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 flags; 42303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 42403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 42503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_getxattr_in { 42603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 size; 42703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 padding; 42803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 42903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 43003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_getxattr_out { 43103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 size; 43203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 padding; 43303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 43403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 43503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_lk_in { 43603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 fh; 43703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 owner; 43803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland struct fuse_file_lock lk; 43903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 lk_flags; 44003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 padding; 44103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 44203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 44303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_lk_out { 44403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland struct fuse_file_lock lk; 44503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 44603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 44703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_access_in { 44803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 mask; 44903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 padding; 45003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 45103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 45203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_init_in { 45303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 major; 45403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 minor; 45503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 max_readahead; 45603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 flags; 45703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 45803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 45903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_init_out { 46003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 major; 46103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 minor; 46203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 max_readahead; 46303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 flags; 46403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u16 max_background; 46503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u16 congestion_threshold; 46603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 max_write; 46703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 46803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 46903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define CUSE_INIT_INFO_MAX 4096 47003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 47103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct cuse_init_in { 47203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 major; 47303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 minor; 47403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 unused; 47503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 flags; 47603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 47703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 47803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct cuse_init_out { 47903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 major; 48003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 minor; 48103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 unused; 48203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 flags; 48303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 max_read; 48403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 max_write; 48503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 dev_major; /* chardev major */ 48603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 dev_minor; /* chardev minor */ 48703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 spare[10]; 48803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 48903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 49003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_interrupt_in { 49103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 unique; 49203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 49303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 49403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_bmap_in { 49503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 block; 49603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 blocksize; 49703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 padding; 49803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 49903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 50003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_bmap_out { 50103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 block; 50203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 50303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 50403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_ioctl_in { 50503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 fh; 50603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 flags; 50703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 cmd; 50803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 arg; 50903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 in_size; 51003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 out_size; 51103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 51203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 51303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_ioctl_out { 51403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __s32 result; 51503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 flags; 51603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 in_iovs; 51703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 out_iovs; 51803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 51903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 52003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_poll_in { 52103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 fh; 52203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 kh; 52303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 flags; 52403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 padding; 52503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 52603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 52703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_poll_out { 52803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 revents; 52903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 padding; 53003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 53103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 53203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_notify_poll_wakeup_out { 53303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 kh; 53403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 53503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 53603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_in_header { 53703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 len; 53803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 opcode; 53903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 unique; 54003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 nodeid; 54103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 uid; 54203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 gid; 54303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 pid; 54403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 padding; 54503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 54603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 54703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_out_header { 54803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 len; 54903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __s32 error; 55003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 unique; 55103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 55203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 55303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_dirent { 55403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 ino; 55503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 off; 55603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 namelen; 55703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 type; 55803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland char name[0]; 55903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 56003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 56103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FUSE_NAME_OFFSET offsetof(struct fuse_dirent, name) 56203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FUSE_DIRENT_ALIGN(x) (((x) + sizeof(__u64) - 1) & ~(sizeof(__u64) - 1)) 56303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#define FUSE_DIRENT_SIZE(d) \ 56403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET + (d)->namelen) 56503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 56603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_notify_inval_inode_out { 56703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 ino; 56803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __s64 off; 56903ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __s64 len; 57003ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 57103ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 57203ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetlandstruct fuse_notify_inval_entry_out { 57303ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u64 parent; 57403ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 namelen; 57503ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland __u32 padding; 57603ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland}; 57703ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland 57803ee9479a4ed67689b9bbccda20c60800a38b178Brian Swetland#endif /* _LINUX_FUSE_H */ 579