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