mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 14:00:58 +07:00
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>
This commit is contained in:
parent
d49937749f
commit
05ea48cc2b
@ -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)
|
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.opcode = args->opcode;
|
||||||
req->in.h.nodeid = args->nodeid;
|
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;
|
req->args = args;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -939,14 +932,15 @@ static int fuse_copy_pages(struct fuse_copy_state *cs, unsigned nbytes,
|
|||||||
{
|
{
|
||||||
unsigned i;
|
unsigned i;
|
||||||
struct fuse_req *req = cs->req;
|
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;
|
int err;
|
||||||
unsigned offset = req->page_descs[i].offset;
|
unsigned int offset = ap->descs[i].offset;
|
||||||
unsigned count = min(nbytes, req->page_descs[i].length);
|
unsigned int count = min(nbytes, ap->descs[i].length);
|
||||||
|
|
||||||
err = fuse_copy_page(cs, &req->pages[i], offset, count,
|
err = fuse_copy_page(cs, &ap->pages[i], offset, count, zeroing);
|
||||||
zeroing);
|
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
|
@ -353,15 +353,6 @@ struct fuse_req {
|
|||||||
/** Used to wake up the task waiting for completion of request*/
|
/** Used to wake up the task waiting for completion of request*/
|
||||||
wait_queue_head_t waitq;
|
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 {
|
struct fuse_iqueue {
|
||||||
|
Loading…
Reference in New Issue
Block a user