Copy from virtiofsd @ 32006c66f2578af4121d7effaccae4aa4fa12e46. This includes the definitions for FUSE_SETUPMAPPING AND FUSE_REMOVEMAPPING.
Signed-off-by: Fotis Xenakis <[email protected]> --- fs/virtiofs/fuse_kernel.h | 82 ++++++++++++++++++--------------------- 1 file changed, 38 insertions(+), 44 deletions(-) diff --git a/fs/virtiofs/fuse_kernel.h b/fs/virtiofs/fuse_kernel.h index 018a00a2..ce46046a 100644 --- a/fs/virtiofs/fuse_kernel.h +++ b/fs/virtiofs/fuse_kernel.h @@ -44,7 +44,6 @@ * - add lock_owner field to fuse_setattr_in, fuse_read_in and fuse_write_in * - add blksize field to fuse_attr * - add file flags field to fuse_read_in and fuse_write_in - * - Add ATIME_NOW and MTIME_NOW flags to fuse_setattr_in * * 7.10 * - add nonseekable open flag @@ -55,7 +54,7 @@ * - add POLL message and NOTIFY_POLL notification * * 7.12 - * - add umask flag to input argument of create, mknod and mkdir + * - add umask flag to input argument of open, mknod and mkdir * - add notification messages for invalidation of inodes and * directory entries * @@ -120,19 +119,6 @@ * * 7.28 * - add FUSE_COPY_FILE_RANGE - * - add FOPEN_CACHE_DIR - * - add FUSE_MAX_PAGES, add max_pages to init_out - * - add FUSE_CACHE_SYMLINKS - * - * 7.29 - * - add FUSE_NO_OPENDIR_SUPPORT flag - * - * 7.30 - * - add FUSE_EXPLICIT_INVAL_DATA - * - add FUSE_IOCTL_COMPAT_X32 - * - * 7.31 - * - add FUSE_WRITE_KILL_PRIV flag */ #ifndef _LINUX_FUSE_H @@ -168,7 +154,7 @@ #define FUSE_KERNEL_VERSION 7 /** Minor version number of this interface */ -#define FUSE_KERNEL_MINOR_VERSION 31 +#define FUSE_KERNEL_MINOR_VERSION 27 /** The node ID of the root inode */ #define FUSE_ROOT_ID 1 @@ -236,14 +222,10 @@ struct fuse_file_lock { * FOPEN_DIRECT_IO: bypass page cache for this open file * FOPEN_KEEP_CACHE: don't invalidate the data cache on open * FOPEN_NONSEEKABLE: the file is not seekable - * FOPEN_CACHE_DIR: allow caching this directory - * FOPEN_STREAM: the file is stream-like (no file position at all) */ #define FOPEN_DIRECT_IO (1 << 0) #define FOPEN_KEEP_CACHE (1 << 1) #define FOPEN_NONSEEKABLE (1 << 2) -#define FOPEN_CACHE_DIR (1 << 3) -#define FOPEN_STREAM (1 << 4) /** * INIT request/reply flags @@ -270,10 +252,6 @@ struct fuse_file_lock { * FUSE_HANDLE_KILLPRIV: fs handles killing suid/sgid/cap on write/chown/trunc * FUSE_POSIX_ACL: filesystem supports posix acls * FUSE_ABORT_ERROR: reading the device after abort returns ECONNABORTED - * FUSE_MAX_PAGES: init_out.max_pages contains the max number of req pages - * 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 */ #define FUSE_ASYNC_READ (1 << 0) #define FUSE_POSIX_LOCKS (1 << 1) @@ -297,10 +275,6 @@ struct fuse_file_lock { #define FUSE_HANDLE_KILLPRIV (1 << 19) #define FUSE_POSIX_ACL (1 << 20) #define FUSE_ABORT_ERROR (1 << 21) -#define FUSE_MAX_PAGES (1 << 22) -#define FUSE_CACHE_SYMLINKS (1 << 23) -#define FUSE_NO_OPENDIR_SUPPORT (1 << 24) -#define FUSE_EXPLICIT_INVAL_DATA (1 << 25) /** * CUSE INIT request/reply flags @@ -330,11 +304,9 @@ 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_PRIV: kill suid and sgid bits */ #define FUSE_WRITE_CACHE (1 << 0) #define FUSE_WRITE_LOCKOWNER (1 << 1) -#define FUSE_WRITE_KILL_PRIV (1 << 2) /** * Read flags @@ -349,7 +321,6 @@ struct fuse_file_lock { * FUSE_IOCTL_RETRY: retry with new iovecs * FUSE_IOCTL_32BIT: 32bit ioctl * FUSE_IOCTL_DIR: is a directory - * FUSE_IOCTL_COMPAT_X32: x32 compat ioctl on 64bit machine (64bit time_t) * * FUSE_IOCTL_MAX_IOV: maximum of in_iovecs + out_iovecs */ @@ -358,7 +329,6 @@ struct fuse_file_lock { #define FUSE_IOCTL_RETRY (1 << 2) #define FUSE_IOCTL_32BIT (1 << 3) #define FUSE_IOCTL_DIR (1 << 4) -#define FUSE_IOCTL_COMPAT_X32 (1 << 5) #define FUSE_IOCTL_MAX_IOV 256 @@ -369,13 +339,6 @@ struct fuse_file_lock { */ #define FUSE_POLL_SCHEDULE_NOTIFY (1 << 0) -/** - * Fsync flags - * - * FUSE_FSYNC_FDATASYNC: Sync data only, not metadata - */ -#define FUSE_FSYNC_FDATASYNC (1 << 0) - enum fuse_opcode { FUSE_LOOKUP = 1, FUSE_FORGET = 2, /* no reply */ @@ -422,9 +385,11 @@ enum fuse_opcode { FUSE_RENAME2 = 45, FUSE_LSEEK = 46, FUSE_COPY_FILE_RANGE = 47, + FUSE_SETUPMAPPING = 48, + FUSE_REMOVEMAPPING = 49, /* CUSE specific operations */ - CUSE_INIT = 4096 + CUSE_INIT = 4096, }; enum fuse_notify_code { @@ -434,7 +399,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 */ @@ -651,9 +616,7 @@ struct fuse_init_out { uint16_t congestion_threshold; uint32_t max_write; uint32_t time_gran; - uint16_t max_pages; - uint16_t padding; - uint32_t unused[8]; + uint32_t unused[9]; }; #define CUSE_INIT_INFO_MAX 4096 @@ -845,4 +808,35 @@ struct fuse_copy_file_range_in { uint64_t flags; }; +#define FUSE_SETUPMAPPING_ENTRIES 8 +#define FUSE_SETUPMAPPING_FLAG_WRITE (1ull << 0) +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; + /* memory offset in to dax window */ + uint64_t moffset; +}; + +struct fuse_setupmapping_out { + /* Offsets into the cache of mappings */ + uint64_t coffset[FUSE_SETUPMAPPING_ENTRIES]; + /* Lengths of each mapping */ + uint64_t len[FUSE_SETUPMAPPING_ENTRIES]; +}; + +struct fuse_removemapping_in { + /* An already open handle */ + uint64_t fh; + /* Offset into the dax to start the unmapping */ + uint64_t moffset; + /* Length of mapping required */ + uint64_t len; +}; + #endif /* _LINUX_FUSE_H */ -- 2.26.1 -- You received this message because you are subscribed to the Google Groups "OSv Development" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/osv-dev/VI1PR03MB4383C4316CF92074FF397F11A6D40%40VI1PR03MB4383.eurprd03.prod.outlook.com.
