Commit ba58a37c authored by Miklos Szeredi's avatar Miklos Szeredi
Browse files

fuse: add STATX request



Use the same structure as statx.

Signed-off-by: default avatarMiklos Szeredi <mszeredi@redhat.com>
parent 8d8f9c4b
Loading
Loading
Loading
Loading
+52 −0
Original line number Diff line number Diff line
@@ -210,6 +210,7 @@
 *
 *  7.39
 *  - add FUSE_DIRECT_IO_RELAX
 *  - add FUSE_STATX and related structures
 */

#ifndef _LINUX_FUSE_H
@@ -272,6 +273,40 @@ struct fuse_attr {
	uint32_t	flags;
};

/*
 * The following structures are bit-for-bit compatible with the statx(2) ABI in
 * Linux.
 */
struct fuse_sx_time {
	int64_t		tv_sec;
	uint32_t	tv_nsec;
	int32_t		__reserved;
};

struct fuse_statx {
	uint32_t	mask;
	uint32_t	blksize;
	uint64_t	attributes;
	uint32_t	nlink;
	uint32_t	uid;
	uint32_t	gid;
	uint16_t	mode;
	uint16_t	__spare0[1];
	uint64_t	ino;
	uint64_t	size;
	uint64_t	blocks;
	uint64_t	attributes_mask;
	struct fuse_sx_time	atime;
	struct fuse_sx_time	btime;
	struct fuse_sx_time	ctime;
	struct fuse_sx_time	mtime;
	uint32_t	rdev_major;
	uint32_t	rdev_minor;
	uint32_t	dev_major;
	uint32_t	dev_minor;
	uint64_t	__spare2[14];
};

struct fuse_kstatfs {
	uint64_t	blocks;
	uint64_t	bfree;
@@ -581,6 +616,7 @@ enum fuse_opcode {
	FUSE_REMOVEMAPPING	= 49,
	FUSE_SYNCFS		= 50,
	FUSE_TMPFILE		= 51,
	FUSE_STATX		= 52,

	/* CUSE specific operations */
	CUSE_INIT		= 4096,
@@ -645,6 +681,22 @@ struct fuse_attr_out {
	struct fuse_attr attr;
};

struct fuse_statx_in {
	uint32_t	getattr_flags;
	uint32_t	reserved;
	uint64_t	fh;
	uint32_t	sx_flags;
	uint32_t	sx_mask;
};

struct fuse_statx_out {
	uint64_t	attr_valid;	/* Cache timeout for the attributes */
	uint32_t	attr_valid_nsec;
	uint32_t	flags;
	uint64_t	spare[2];
	struct fuse_statx stat;
};

#define FUSE_COMPAT_MKNOD_IN_SIZE 8

struct fuse_mknod_in {