summaryrefslogtreecommitdiff
path: root/fs/fuse/fuse_i.h
diff options
context:
space:
mode:
authorMiklos Szeredi <mszeredi@redhat.com>2019-09-10 16:04:11 +0300
committerMiklos Szeredi <mszeredi@redhat.com>2019-09-10 17:29:50 +0300
commitd49937749fef2597f6bcaf2a0ed67e88e347b7fb (patch)
treedfd59d339f8a13b8f52227e18b4f6e06c0faa7b6 /fs/fuse/fuse_i.h
parent145b673bd208af97b2f98572f286111ab8e7bc59 (diff)
downloadlinux-d49937749fef2597f6bcaf2a0ed67e88e347b7fb.tar.xz
fuse: stop copying args to fuse_req
No need to duplicate the argument arrays in fuse_req, so just dereference req->args instead of copying to the fuse_req internal ones. This allows further cleanup of the fuse_req structure. Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Diffstat (limited to 'fs/fuse/fuse_i.h')
-rw-r--r--fs/fuse/fuse_i.h60
1 files changed, 8 insertions, 52 deletions
diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h
index a81fdbe62df9..9454f2328bd0 100644
--- a/fs/fuse/fuse_i.h
+++ b/fs/fuse/fuse_i.h
@@ -224,57 +224,12 @@ struct fuse_in_arg {
const void *value;
};
-/** The request input */
-struct fuse_in {
- /** The request header */
- struct fuse_in_header h;
-
- /** True if the data for the last argument is in req->pages */
- unsigned argpages:1;
-
- /** Number of arguments */
- unsigned numargs;
-
- /** Array of arguments */
- struct fuse_in_arg args[3];
-};
-
/** One output argument of a request */
struct fuse_arg {
unsigned size;
void *value;
};
-/** The request output */
-struct fuse_out {
- /** Header returned from userspace */
- struct fuse_out_header h;
-
- /*
- * The following bitfields are not changed during the request
- * processing
- */
-
- /** Last argument is variable length (can be shorter than
- arg->size) */
- unsigned argvar:1;
-
- /** Last argument is a list of pages to copy data to */
- unsigned argpages:1;
-
- /** Zero partially or not copied pages */
- unsigned page_zeroing:1;
-
- /** Pages may be replaced with new ones */
- unsigned page_replace:1;
-
- /** Number or arguments */
- unsigned numargs;
-
- /** Array of arguments */
- struct fuse_arg args[2];
-};
-
/** FUSE page descriptor */
struct fuse_page_desc {
unsigned int length;
@@ -385,11 +340,15 @@ struct fuse_req {
/* Request flags, updated with test/set/clear_bit() */
unsigned long flags;
- /** The request input */
- struct fuse_in in;
+ /* The request input header */
+ struct {
+ struct fuse_in_header h;
+ } in;
- /** The request output */
- struct fuse_out out;
+ /* The request output header */
+ struct {
+ struct fuse_out_header h;
+ } out;
/** Used to wake up the task waiting for completion of request*/
wait_queue_head_t waitq;
@@ -403,9 +362,6 @@ struct fuse_req {
/** number of pages in vector */
unsigned num_pages;
- /** Request completion callback */
- void (*end)(struct fuse_conn *, struct fuse_req *);
-
};
struct fuse_iqueue {