diff options
author | Miklos Szeredi <mszeredi@redhat.com> | 2019-09-10 15:04:11 +0200 |
---|---|---|
committer | Miklos Szeredi <mszeredi@redhat.com> | 2019-09-10 16:29:50 +0200 |
commit | 05ea48cc2b098c533193bb058b82aa016a8361bc (patch) | |
tree | 2b72b0d7a1a92ba4f26fa17f39ce10f3e46100c0 /fs/fuse/dev.c | |
parent | d49937749fef2597f6bcaf2a0ed67e88e347b7fb (diff) |
fuse: stop copying pages to fuse_req
The page array pointers are also duplicated across fuse_args_pages and
fuse_req. Get rid of the fuse_req ones.
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Diffstat (limited to 'fs/fuse/dev.c')
-rw-r--r-- | fs/fuse/dev.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c index dfc0658d990b..d7cae9001ca7 100644 --- a/fs/fuse/dev.c +++ b/fs/fuse/dev.c @@ -448,15 +448,8 @@ static void fuse_force_creds(struct fuse_conn *fc, struct fuse_req *req) void fuse_args_to_req(struct fuse_req *req, struct fuse_args *args) { - struct fuse_args_pages *ap = container_of(args, typeof(*ap), args); - req->in.h.opcode = args->opcode; req->in.h.nodeid = args->nodeid; - if (args->in_pages || args->out_pages) { - req->pages = ap->pages; - req->page_descs = ap->descs; - req->num_pages = ap->num_pages; - } req->args = args; } @@ -939,14 +932,15 @@ static int fuse_copy_pages(struct fuse_copy_state *cs, unsigned nbytes, { unsigned i; struct fuse_req *req = cs->req; + struct fuse_args_pages *ap = container_of(req->args, typeof(*ap), args); + - for (i = 0; i < req->num_pages && (nbytes || zeroing); i++) { + for (i = 0; i < ap->num_pages && (nbytes || zeroing); i++) { int err; - unsigned offset = req->page_descs[i].offset; - unsigned count = min(nbytes, req->page_descs[i].length); + unsigned int offset = ap->descs[i].offset; + unsigned int count = min(nbytes, ap->descs[i].length); - err = fuse_copy_page(cs, &req->pages[i], offset, count, - zeroing); + err = fuse_copy_page(cs, &ap->pages[i], offset, count, zeroing); if (err) return err; |