fuse: stop copying pages to fuse_req
authorMiklos Szeredi <mszeredi@redhat.com>
Tue, 10 Sep 2019 13:04:11 +0000 (15:04 +0200)
committerMiklos Szeredi <mszeredi@redhat.com>
Tue, 10 Sep 2019 14:29:50 +0000 (16:29 +0200)
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>
fs/fuse/dev.c
fs/fuse/fuse_i.h

index dfc0658d990b755769c3651588b633baa2321b7e..d7cae9001ca728d6902e8ab3cc838a50e89e8325 100644 (file)
@@ -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;
 
index 9454f2328bd09b488f64a1fb5dbc10c91c21f3d4..378f1fe69d077e7ed37089fa202f035a202f92e9 100644 (file)
@@ -353,15 +353,6 @@ struct fuse_req {
        /** Used to wake up the task waiting for completion of request*/
        wait_queue_head_t waitq;
 
-       /** page vector */
-       struct page **pages;
-
-       /** page-descriptor vector */
-       struct fuse_page_desc *page_descs;
-
-       /** number of pages in vector */
-       unsigned num_pages;
-
 };
 
 struct fuse_iqueue {