summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikolaus Rath <Nikolaus@rath.org>2023-03-26 11:35:22 +0100
committerNikolaus Rath <Nikolaus@rath.org>2023-03-26 11:35:22 +0100
commit024eccbfa5c71a1c927e83753c26c1e6a738708f (patch)
tree6cc2138cec897bf395064cfa93c577b9b3c39ac0
parent81ad52c7dbed9b0d228e9d028b6f6ab800bd1a68 (diff)
downloadfuse-024eccbfa5c71a1c927e83753c26c1e6a738708f.tar.gz
Revert "upgrade of fuse_kernel.h based on Miklos expire_only kernel patch https://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse.git/commit/?h=for-next&id=53e949edb7692dce02220eba926c9d75ecbb47f7"
This reverts commit 7f430a39db5a30979d75a906af891a38ebce1a3c because it breaks setxattr(). Fixes: #730
-rw-r--r--include/fuse_kernel.h201
1 files changed, 11 insertions, 190 deletions
diff --git a/include/fuse_kernel.h b/include/fuse_kernel.h
index 814a86f..85a383f 100644
--- a/include/fuse_kernel.h
+++ b/include/fuse_kernel.h
@@ -38,43 +38,6 @@
*
* Protocol changelog:
*
- * 7.1:
- * - add the following messages:
- * FUSE_SETATTR, FUSE_SYMLINK, FUSE_MKNOD, FUSE_MKDIR, FUSE_UNLINK,
- * FUSE_RMDIR, FUSE_RENAME, FUSE_LINK, FUSE_OPEN, FUSE_READ, FUSE_WRITE,
- * FUSE_RELEASE, FUSE_FSYNC, FUSE_FLUSH, FUSE_SETXATTR, FUSE_GETXATTR,
- * FUSE_LISTXATTR, FUSE_REMOVEXATTR, FUSE_OPENDIR, FUSE_READDIR,
- * FUSE_RELEASEDIR
- * - add padding to messages to accommodate 32-bit servers on 64-bit kernels
- *
- * 7.2:
- * - add FOPEN_DIRECT_IO and FOPEN_KEEP_CACHE flags
- * - add FUSE_FSYNCDIR message
- *
- * 7.3:
- * - add FUSE_ACCESS message
- * - add FUSE_CREATE message
- * - add filehandle to fuse_setattr_in
- *
- * 7.4:
- * - add frsize to fuse_kstatfs
- * - clean up request size limit checking
- *
- * 7.5:
- * - add flags and max_write to fuse_init_out
- *
- * 7.6:
- * - add max_readahead to fuse_init_in and fuse_init_out
- *
- * 7.7:
- * - add FUSE_INTERRUPT message
- * - add POSIX file lock support
- *
- * 7.8:
- * - add lock_owner and flags fields to fuse_release_in
- * - add FUSE_BMAP message
- * - add FUSE_DESTROY message
- *
* 7.9:
* - new fuse_getattr_in input argument of GETATTR
* - add lk_flags in fuse_lk_in
@@ -170,36 +133,6 @@
*
* 7.31
* - add FUSE_WRITE_KILL_PRIV flag
- * - add FUSE_SETUPMAPPING and FUSE_REMOVEMAPPING
- * - add map_alignment to fuse_init_out, add FUSE_MAP_ALIGNMENT flag
- *
- * 7.32
- * - add flags to fuse_attr, add FUSE_ATTR_SUBMOUNT, add FUSE_SUBMOUNTS
- *
- * 7.33
- * - add FUSE_HANDLE_KILLPRIV_V2, FUSE_WRITE_KILL_SUIDGID, FATTR_KILL_SUIDGID
- * - add FUSE_OPEN_KILL_SUIDGID
- * - extend fuse_setxattr_in, add FUSE_SETXATTR_EXT
- * - add FUSE_SETXATTR_ACL_KILL_SGID
- *
- * 7.34
- * - add FUSE_SYNCFS
- *
- * 7.35
- * - add FOPEN_NOFLUSH
- *
- * 7.36
- * - extend fuse_init_in with reserved fields, add FUSE_INIT_EXT init flag
- * - add flags2 to fuse_init_in and fuse_init_out
- * - add FUSE_SECURITY_CTX init flag
- * - add security context to create, mkdir, symlink, and mknod requests
- * - add FUSE_HAS_INODE_DAX, FUSE_ATTR_DAX
- *
- * 7.37
- * - add FUSE_TMPFILE
- *
- * 7.38
- * - add FUSE_EXPIRE_ONLY flag to fuse_notify_inval_entry
*/
#ifndef _LINUX_FUSE_H
@@ -235,7 +168,7 @@
#define FUSE_KERNEL_VERSION 7
/** Minor version number of this interface */
-#define FUSE_KERNEL_MINOR_VERSION 38
+#define FUSE_KERNEL_MINOR_VERSION 31
/** The node ID of the root inode */
#define FUSE_ROOT_ID 1
@@ -259,7 +192,7 @@ struct fuse_attr {
uint32_t gid;
uint32_t rdev;
uint32_t blksize;
- uint32_t flags;
+ uint32_t padding;
};
struct fuse_kstatfs {
@@ -296,7 +229,6 @@ struct fuse_file_lock {
#define FATTR_MTIME_NOW (1 << 8)
#define FATTR_LOCKOWNER (1 << 9)
#define FATTR_CTIME (1 << 10)
-#define FATTR_KILL_SUIDGID (1 << 11)
/**
* Flags returned by the OPEN request
@@ -345,21 +277,6 @@ struct fuse_file_lock {
* FUSE_CACHE_SYMLINKS: cache READLINK responses
* FUSE_NO_OPENDIR_SUPPORT: kernel supports zero-message opendir
* FUSE_EXPLICIT_INVAL_DATA: only invalidate cached pages on explicit request
- * FUSE_MAP_ALIGNMENT: init_out.map_alignment contains log2(byte alignment) for
- * foffset and moffset fields in struct
- * fuse_setupmapping_out and fuse_removemapping_one.
- * FUSE_SUBMOUNTS: kernel supports auto-mounting directory submounts
- * FUSE_HANDLE_KILLPRIV_V2: fs kills suid/sgid/cap on write/chown/trunc.
- * Upon write/truncate suid/sgid is only killed if caller
- * does not have CAP_FSETID. Additionally upon
- * write/truncate sgid is killed only if file has group
- * execute permission. (Same as Linux VFS behavior).
- * FUSE_SETXATTR_EXT: Server supports extended struct fuse_setxattr_in
- * FUSE_INIT_EXT: extended fuse_init_in request
- * FUSE_INIT_RESERVED: reserved, do not use
- * FUSE_SECURITY_CTX: add security context to create, mkdir, symlink, and
- * mknod
- * FUSE_HAS_INODE_DAX: use per inode DAX
*/
#define FUSE_ASYNC_READ (1 << 0)
#define FUSE_POSIX_LOCKS (1 << 1)
@@ -425,14 +342,11 @@ struct fuse_file_lock {
*
* FUSE_WRITE_CACHE: delayed write from page cache, file handle is guessed
* FUSE_WRITE_LOCKOWNER: lock_owner field is valid
- * FUSE_WRITE_KILL_SUIDGID: kill suid and sgid bits
+ * FUSE_WRITE_KILL_PRIV: kill suid and sgid bits
*/
#define FUSE_WRITE_CACHE (1 << 0)
#define FUSE_WRITE_LOCKOWNER (1 << 1)
-#define FUSE_WRITE_KILL_SUIDGID (1 << 2)
-
-/* Obsolete alias; this flag implies killing suid/sgid only. */
-#define FUSE_WRITE_KILL_PRIV FUSE_WRITE_KILL_SUIDGID
+#define FUSE_WRITE_KILL_PRIV (1 << 2)
/**
* Read flags
@@ -475,27 +389,6 @@ struct fuse_file_lock {
#define FUSE_FSYNC_FDATASYNC (1 << 0)
/**
- * fuse_attr flags
- *
- * FUSE_ATTR_SUBMOUNT: Object is a submount root
- * FUSE_ATTR_DAX: Enable DAX for this file in per inode DAX mode
- */
-#define FUSE_ATTR_SUBMOUNT (1 << 0)
-#define FUSE_ATTR_DAX (1 << 1)
-
-/**
- * Open flags
- * FUSE_OPEN_KILL_SUIDGID: Kill suid and sgid if executable
- */
-#define FUSE_OPEN_KILL_SUIDGID (1 << 0)
-
-/**
- * setxattr flags
- * FUSE_SETXATTR_ACL_KILL_SGID: Clear SGID when system.posix_acl_access is set
- */
-#define FUSE_SETXATTR_ACL_KILL_SGID (1 << 0)
-
-/**
* notify_inval_entry flags
* FUSE_EXPIRE_ONLY
*/
@@ -547,17 +440,9 @@ enum fuse_opcode {
FUSE_RENAME2 = 45,
FUSE_LSEEK = 46,
FUSE_COPY_FILE_RANGE = 47,
- FUSE_SETUPMAPPING = 48,
- FUSE_REMOVEMAPPING = 49,
- FUSE_SYNCFS = 50,
- FUSE_TMPFILE = 51,
/* CUSE specific operations */
- CUSE_INIT = 4096,
-
- /* Reserved opcodes: helpful to detect structure endian-ness */
- CUSE_INIT_BSWAP_RESERVED = 1048576, /* CUSE_INIT << 8 */
- FUSE_INIT_BSWAP_RESERVED = 436207616, /* FUSE_INIT << 24 */
+ CUSE_INIT = 4096
};
enum fuse_notify_code {
@@ -567,7 +452,7 @@ enum fuse_notify_code {
FUSE_NOTIFY_STORE = 4,
FUSE_NOTIFY_RETRIEVE = 5,
FUSE_NOTIFY_DELETE = 6,
- FUSE_NOTIFY_CODE_MAX,
+ FUSE_NOTIFY_CODE_MAX
};
/* The read buffer is required to be at least 8k, but may be much larger */
@@ -664,14 +549,14 @@ struct fuse_setattr_in {
struct fuse_open_in {
uint32_t flags;
- uint32_t open_flags; /* FUSE_OPEN_... */
+ uint32_t unused;
};
struct fuse_create_in {
uint32_t flags;
uint32_t mode;
uint32_t umask;
- uint32_t open_flags; /* FUSE_OPEN_... */
+ uint32_t padding;
};
struct fuse_open_out {
@@ -733,13 +618,9 @@ struct fuse_fsync_in {
uint32_t padding;
};
-#define FUSE_COMPAT_SETXATTR_IN_SIZE 8
-
struct fuse_setxattr_in {
uint32_t size;
uint32_t flags;
- uint32_t setxattr_flags;
- uint32_t padding;
};
struct fuse_getxattr_in {
@@ -901,12 +782,9 @@ struct fuse_dirent {
char name[];
};
-/* Align variable length records to 64bit boundary */
-#define FUSE_REC_ALIGN(x) \
- (((x) + sizeof(uint64_t) - 1) & ~(sizeof(uint64_t) - 1))
-
#define FUSE_NAME_OFFSET offsetof(struct fuse_dirent, name)
-#define FUSE_DIRENT_ALIGN(x) FUSE_REC_ALIGN(x)
+#define FUSE_DIRENT_ALIGN(x) \
+ (((x) + sizeof(uint64_t) - 1) & ~(sizeof(uint64_t) - 1))
#define FUSE_DIRENT_SIZE(d) \
FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET + (d)->namelen)
@@ -965,8 +843,7 @@ struct fuse_notify_retrieve_in {
};
/* Device ioctls: */
-#define FUSE_DEV_IOC_MAGIC 229
-#define FUSE_DEV_IOC_CLONE _IOR(FUSE_DEV_IOC_MAGIC, 0, uint32_t)
+#define FUSE_DEV_IOC_CLONE _IOR(229, 0, uint32_t)
struct fuse_lseek_in {
uint64_t fh;
@@ -989,60 +866,4 @@ struct fuse_copy_file_range_in {
uint64_t flags;
};
-#define FUSE_SETUPMAPPING_FLAG_WRITE (1ull << 0)
-#define FUSE_SETUPMAPPING_FLAG_READ (1ull << 1)
-struct fuse_setupmapping_in {
- /* An already open handle */
- uint64_t fh;
- /* Offset into the file to start the mapping */
- uint64_t foffset;
- /* Length of mapping required */
- uint64_t len;
- /* Flags, FUSE_SETUPMAPPING_FLAG_* */
- uint64_t flags;
- /* Offset in Memory Window */
- uint64_t moffset;
-};
-
-struct fuse_removemapping_in {
- /* number of fuse_removemapping_one follows */
- uint32_t count;
-};
-
-struct fuse_removemapping_one {
- /* Offset into the dax window start the unmapping */
- uint64_t moffset;
- /* Length of mapping required */
- uint64_t len;
-};
-
-#define FUSE_REMOVEMAPPING_MAX_ENTRY \
- (PAGE_SIZE / sizeof(struct fuse_removemapping_one))
-
-struct fuse_syncfs_in {
- uint64_t padding;
-};
-
-/*
- * For each security context, send fuse_secctx with size of security context
- * fuse_secctx will be followed by security context name and this in turn
- * will be followed by actual context label.
- * fuse_secctx, name, context
- */
-struct fuse_secctx {
- uint32_t size;
- uint32_t padding;
-};
-
-/*
- * Contains the information about how many fuse_secctx structures are being
- * sent and what's the total size of all security contexts (including
- * size of fuse_secctx_header).
- *
- */
-struct fuse_secctx_header {
- uint32_t size;
- uint32_t nr_secctx;
-};
-
#endif /* _LINUX_FUSE_H */