From fc4ac7f0c4af22384dfaff4a54951c0be499e314 Mon Sep 17 00:00:00 2001 From: Alessio Balsini Date: Mon, 25 Jan 2021 22:39:00 +0000 Subject: [PATCH] Revert "FROMLIST: fuse: Introduce synchronous read and write for passthrough" This reverts commit f32d3e5eb8274a35ff703c6baf1571bf1624c414. Change-Id: Ie0910ff6c510ba19b56fa3ca22ae13e96f6f37d2 Signed-off-by: Alessio Balsini --- fs/fuse/file.c | 8 ++--- fs/fuse/fuse_i.h | 2 -- fs/fuse/passthrough.c | 70 ------------------------------------------- 3 files changed, 2 insertions(+), 78 deletions(-) diff --git a/fs/fuse/file.c b/fs/fuse/file.c index 54b2e3c5bd04..eb1c34473e3d 100644 --- a/fs/fuse/file.c +++ b/fs/fuse/file.c @@ -1566,9 +1566,7 @@ static ssize_t fuse_file_read_iter(struct kiocb *iocb, struct iov_iter *to) if (FUSE_IS_DAX(inode)) return fuse_dax_read_iter(iocb, to); - if (ff->passthrough.filp) - return fuse_passthrough_read_iter(iocb, to); - else if (!(ff->open_flags & FOPEN_DIRECT_IO)) + if (!(ff->open_flags & FOPEN_DIRECT_IO)) return fuse_cache_read_iter(iocb, to); else return fuse_direct_read_iter(iocb, to); @@ -1586,9 +1584,7 @@ static ssize_t fuse_file_write_iter(struct kiocb *iocb, struct iov_iter *from) if (FUSE_IS_DAX(inode)) return fuse_dax_write_iter(iocb, from); - if (ff->passthrough.filp) - return fuse_passthrough_write_iter(iocb, from); - else if (!(ff->open_flags & FOPEN_DIRECT_IO)) + if (!(ff->open_flags & FOPEN_DIRECT_IO)) return fuse_cache_write_iter(iocb, from); else return fuse_direct_write_iter(iocb, from); diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h index 8360f3dee402..863b1082e44d 100644 --- a/fs/fuse/fuse_i.h +++ b/fs/fuse/fuse_i.h @@ -1248,7 +1248,5 @@ int fuse_passthrough_open(struct fuse_dev *fud, int fuse_passthrough_setup(struct fuse_conn *fc, struct fuse_file *ff, struct fuse_open_out *openarg); void fuse_passthrough_release(struct fuse_passthrough *passthrough); -ssize_t fuse_passthrough_read_iter(struct kiocb *iocb, struct iov_iter *to); -ssize_t fuse_passthrough_write_iter(struct kiocb *iocb, struct iov_iter *from); #endif /* _FS_FUSE_I_H */ diff --git a/fs/fuse/passthrough.c b/fs/fuse/passthrough.c index 5a78cb336db4..a135c955cc33 100644 --- a/fs/fuse/passthrough.c +++ b/fs/fuse/passthrough.c @@ -4,76 +4,6 @@ #include #include -#include - -static void fuse_copyattr(struct file *dst_file, struct file *src_file) -{ - struct inode *dst = file_inode(dst_file); - struct inode *src = file_inode(src_file); - - i_size_write(dst, i_size_read(src)); -} - -static inline rwf_t iocb_to_rw_flags(int ifl) -{ - rwf_t flags = 0; - - if (ifl & IOCB_APPEND) - flags |= RWF_APPEND; - if (ifl & IOCB_DSYNC) - flags |= RWF_DSYNC; - if (ifl & IOCB_HIPRI) - flags |= RWF_HIPRI; - if (ifl & IOCB_NOWAIT) - flags |= RWF_NOWAIT; - if (ifl & IOCB_SYNC) - flags |= RWF_SYNC; - - return flags; -} - -ssize_t fuse_passthrough_read_iter(struct kiocb *iocb_fuse, - struct iov_iter *iter) -{ - ssize_t ret; - struct file *fuse_filp = iocb_fuse->ki_filp; - struct fuse_file *ff = fuse_filp->private_data; - struct file *passthrough_filp = ff->passthrough.filp; - - if (!iov_iter_count(iter)) - return 0; - - ret = vfs_iter_read(passthrough_filp, iter, &iocb_fuse->ki_pos, - iocb_to_rw_flags(iocb_fuse->ki_flags)); - - return ret; -} - -ssize_t fuse_passthrough_write_iter(struct kiocb *iocb_fuse, - struct iov_iter *iter) -{ - ssize_t ret; - struct file *fuse_filp = iocb_fuse->ki_filp; - struct fuse_file *ff = fuse_filp->private_data; - struct inode *fuse_inode = file_inode(fuse_filp); - struct file *passthrough_filp = ff->passthrough.filp; - - if (!iov_iter_count(iter)) - return 0; - - inode_lock(fuse_inode); - - file_start_write(passthrough_filp); - ret = vfs_iter_write(passthrough_filp, iter, &iocb_fuse->ki_pos, - iocb_to_rw_flags(iocb_fuse->ki_flags)); - file_end_write(passthrough_filp); - if (ret > 0) - fuse_copyattr(fuse_filp, passthrough_filp); - - inode_unlock(fuse_inode); - - return ret; -} int fuse_passthrough_open(struct fuse_dev *fud, struct fuse_passthrough_out *pto)