summaryrefslogtreecommitdiff
path: root/fs/fuse/fuse_i.h
diff options
context:
space:
mode:
authorMiklos Szeredi <mszeredi@redhat.com>2019-09-10 15:04:09 +0200
committerMiklos Szeredi <mszeredi@redhat.com>2019-09-10 16:29:49 +0200
commit68583165f962793a6fe7d11f54713045f43fc8bb (patch)
tree2c38f8b25f8619d19450f2d483496b4ae49eeb54 /fs/fuse/fuse_i.h
parent1ccd1ea24962276ca0548386889ef7bf57479c5d (diff)
fuse: add pages to fuse_args
Derive fuse_args_pages from fuse_args. This is used to handle requests which use pages for input or output. The related flags are added to fuse_args. New FR_ALLOC_PAGES flags is added to indicate whether the page arrays in fuse_req need to be freed by fuse_put_request() or not. Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Diffstat (limited to 'fs/fuse/fuse_i.h')
-rw-r--r--fs/fuse/fuse_i.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h
index 73f70f3872e7..1998d6ab4025 100644
--- a/fs/fuse/fuse_i.h
+++ b/fs/fuse/fuse_i.h
@@ -294,11 +294,22 @@ struct fuse_args {
bool force:1;
bool noreply:1;
bool nocreds:1;
+ bool in_pages:1;
+ bool out_pages:1;
bool out_argvar:1;
+ bool page_zeroing:1;
+ bool page_replace:1;
struct fuse_in_arg in_args[3];
struct fuse_arg out_args[2];
};
+struct fuse_args_pages {
+ struct fuse_args args;
+ struct page **pages;
+ struct fuse_page_desc *descs;
+ unsigned int num_pages;
+};
+
#define FUSE_ARGS(args) struct fuse_args args = {}
/** The request IO state (for asynchronous processing) */
@@ -352,6 +363,7 @@ enum fuse_req_flag {
FR_SENT,
FR_FINISHED,
FR_PRIVATE,
+ FR_ALLOC_PAGES,
};
/**