| /* SPDX-License-Identifier: GPL-2.0 */ | |
| #ifndef _FS_FUSE_ARGS_H | |
| #define _FS_FUSE_ARGS_H | |
| #include <linux/types.h> | |
| struct fuse_mount; | |
| /** One input argument of a request */ | |
| struct fuse_in_arg { | |
| unsigned size; | |
| const void *value; | |
| }; | |
| /** One output argument of a request */ | |
| struct fuse_arg { | |
| unsigned size; | |
| void *value; | |
| }; | |
| struct fuse_args { | |
| u64 nodeid; | |
| u32 opcode; | |
| u32 uid; | |
| u32 gid; | |
| u32 pid; | |
| u8 in_numargs; | |
| u8 out_numargs; | |
| u8 ext_idx; | |
| bool force:1; | |
| bool noreply:1; | |
| bool nocreds:1; | |
| bool in_pages:1; | |
| bool out_pages:1; | |
| bool user_pages:1; | |
| bool out_argvar:1; | |
| bool page_zeroing:1; | |
| bool page_replace:1; | |
| bool may_block:1; | |
| bool is_ext:1; | |
| bool is_pinned:1; | |
| bool invalidate_vmap:1; | |
| bool abort_on_kill:1; | |
| /* server requested io-uring zero-copy for this op */ | |
| bool zero_copy:1; | |
| struct fuse_in_arg in_args[4]; | |
| struct fuse_arg out_args[2]; | |
| void (*end)(struct fuse_args *args, int error); | |
| /* Used for kvec iter backed by vmalloc address */ | |
| void *vmap_base; | |
| }; | |
| /** FUSE folio descriptor */ | |
| struct fuse_folio_desc { | |
| unsigned int length; | |
| unsigned int offset; | |
| }; | |
| struct fuse_args_pages { | |
| struct fuse_args args; | |
| struct folio **folios; | |
| struct fuse_folio_desc *descs; | |
| unsigned int num_folios; | |
| }; | |
| #endif /* _FS_FUSE_ARGS_H */ |