Apparently the 'inode' is redundant given the presence of 'io_inode', so removes it.
meanwhile move the 'page_cache' and 'killed' bit after other bit field. Signed-off-by: Liu Kui <kui....@virtuozzo.com> --- fs/fuse/dev.c | 4 ++-- fs/fuse/file.c | 3 +-- fs/fuse/fuse_i.h | 12 +++--------- fs/fuse/inode.c | 2 +- 4 files changed, 7 insertions(+), 14 deletions(-) diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c index e27c7c23380f..782f79010dce 100644 --- a/fs/fuse/dev.c +++ b/fs/fuse/dev.c @@ -1465,8 +1465,8 @@ static ssize_t fuse_dev_do_read(struct fuse_dev *fud, struct file *file, goto out_end; } - if (args->page_cache && args->inode) { - struct fuse_inode *fi = get_fuse_inode(args->inode); + if (args->page_cache && args->io_inode) { + struct fuse_inode *fi = get_fuse_inode(args->io_inode); if (test_bit(FUSE_I_INVAL_FILES, &fi->state) || args->killed) { req->out.h.error = -EIO; diff --git a/fs/fuse/file.c b/fs/fuse/file.c index 27e4b5491358..2b92e59ac1db 100644 --- a/fs/fuse/file.c +++ b/fs/fuse/file.c @@ -871,7 +871,6 @@ void fuse_read_args_fill(struct fuse_io_args *ia, struct file *file, loff_t pos, if (opcode == FUSE_READ && count >= read_route_break) { args->fiq = fuse_route_io(ff->fm->fc, &ff->fm->fc->rrt, count, args->io_inode); - args->inode = file->f_path.dentry->d_inode; args->ff = ff; } } @@ -1233,7 +1232,7 @@ static void fuse_readpages_end(struct fuse_mount *fm, struct fuse_args *args, struct fuse_args_pages *ap = &ia->ap; size_t count = ia->read.in.size; size_t num_read = args->out_args[0].size; - struct inode *inode = args->inode; + struct inode *inode = args->io_inode; if (unlikely(killed)) err = -EIO; diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h index 3536e4216ecb..b07a18e39487 100644 --- a/fs/fuse/fuse_i.h +++ b/fs/fuse/fuse_i.h @@ -356,21 +356,15 @@ struct fuse_args { bool nonblocking:1; bool kio_internal:1; bool async:1; + bool page_cache:1; + bool killed:1; struct fuse_in_arg in_args[3]; struct fuse_arg out_args[3]; void (*end)(struct fuse_mount *fm, struct fuse_args *args, int error); struct fuse_req *req; - /** Request contains pages from page-cache */ - unsigned page_cache:1; - - /** Request was killed -- pages were unlocked */ - unsigned killed:1; - - struct inode *io_inode; - /** Inode used in the request or NULL */ - struct inode *inode; + struct inode *io_inode; /** Request will be handled by fud pointing to this fiq */ struct fuse_iqueue *fiq; diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c index 49b49bc90a4a..987b1d3267a3 100644 --- a/fs/fuse/inode.c +++ b/fs/fuse/inode.c @@ -603,7 +603,7 @@ void fuse_kill_requests(struct fuse_conn *fc, struct inode *inode, struct fuse_req *req; list_for_each_entry(req, req_list, list) - if (req->args->inode == inode && req->args->page_cache && + if (req->args->io_inode == inode && req->args->page_cache && !req->args->killed) { struct fuse_io_args *ia = container_of(req->args, typeof(*ia), ap.args); -- 2.39.5 (Apple Git-154) _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel