diff --git a/drivers/staging/lustre/lustre/include/lclient.h b/drivers/staging/lustre/lustre/include/lclient.h index 27316f7b7a70..de8f82ccb94d 100644 --- a/drivers/staging/lustre/lustre/include/lclient.h +++ b/drivers/staging/lustre/lustre/include/lclient.h @@ -118,7 +118,7 @@ struct ccc_io { }; /** - * True, if \a io is a normal io, False for other (sendfile, splice*). + * True, if \a io is a normal io, False for splice_{read,write}. * must be impementated in arch specific code. */ int cl_is_normalio(const struct lu_env *env, const struct cl_io *io); diff --git a/drivers/staging/lustre/lustre/llite/file.c b/drivers/staging/lustre/lustre/llite/file.c index abf5f4611abc..4c28f39e8b18 100644 --- a/drivers/staging/lustre/lustre/llite/file.c +++ b/drivers/staging/lustre/lustre/llite/file.c @@ -1091,10 +1091,6 @@ restart: down_read(&lli->lli_trunc_sem); } break; - case IO_SENDFILE: - vio->u.sendfile.cui_actor = args->u.sendfile.via_actor; - vio->u.sendfile.cui_target = args->u.sendfile.via_target; - break; case IO_SPLICE: vio->u.splice.cui_pipe = args->u.splice.via_pipe; vio->u.splice.cui_flags = args->u.splice.via_flags; diff --git a/drivers/staging/lustre/lustre/llite/llite_internal.h b/drivers/staging/lustre/lustre/llite/llite_internal.h index bc17c2957943..e27efd164fe8 100644 --- a/drivers/staging/lustre/lustre/llite/llite_internal.h +++ b/drivers/staging/lustre/lustre/llite/llite_internal.h @@ -912,8 +912,6 @@ void vvp_write_complete(struct ccc_object *club, struct ccc_page *page); enum vvp_io_subtype { /** normal IO */ IO_NORMAL, - /** io called from .sendfile */ - IO_SENDFILE, /** io started from splice_{read|write} */ IO_SPLICE }; @@ -924,10 +922,6 @@ struct vvp_io { enum vvp_io_subtype cui_io_subtype; union { - struct { - read_actor_t cui_actor; - void *cui_target; - } sendfile; struct { struct pipe_inode_info *cui_pipe; unsigned int cui_flags; @@ -974,7 +968,7 @@ struct vvp_io { * IO arguments for various VFS I/O interfaces. */ struct vvp_io_args { - /** normal/sendfile/splice */ + /** normal/splice */ enum vvp_io_subtype via_io_subtype; union { @@ -983,10 +977,6 @@ struct vvp_io_args { struct iovec *via_iov; unsigned long via_nrsegs; } normal; - struct { - read_actor_t via_actor; - void *via_target; - } sendfile; struct { struct pipe_inode_info *via_pipe; unsigned int via_flags; diff --git a/drivers/staging/lustre/lustre/llite/rw.c b/drivers/staging/lustre/lustre/llite/rw.c index e9ba38a553cf..ca8fa4eacf66 100644 --- a/drivers/staging/lustre/lustre/llite/rw.c +++ b/drivers/staging/lustre/lustre/llite/rw.c @@ -135,7 +135,7 @@ static struct ll_cl_context *ll_cl_init(struct file *file, } /* - * Loop-back driver calls ->prepare_write() and ->sendfile() + * Loop-back driver calls ->prepare_write(). * methods directly, bypassing file system ->write() operation, * so cl_io has to be created here. */ diff --git a/drivers/staging/lustre/lustre/llite/vvp_io.c b/drivers/staging/lustre/lustre/llite/vvp_io.c index 93cbfbb7e7f7..50383d365a0f 100644 --- a/drivers/staging/lustre/lustre/llite/vvp_io.c +++ b/drivers/staging/lustre/lustre/llite/vvp_io.c @@ -51,7 +51,7 @@ static struct vvp_io *cl2vvp_io(const struct lu_env *env, const struct cl_io_slice *slice); /** - * True, if \a io is a normal io, False for sendfile() / splice_{read|write} + * True, if \a io is a normal io, False for splice_{read,write} */ int cl_is_normalio(const struct lu_env *env, const struct cl_io *io) { @@ -474,20 +474,6 @@ static void vvp_io_setattr_fini(const struct lu_env *env, vvp_io_fini(env, ios); } -static ssize_t lustre_generic_file_read(struct file *file, - struct ccc_io *vio, loff_t *ppos) -{ - return generic_file_aio_read(vio->cui_iocb, vio->cui_iov, - vio->cui_nrsegs, *ppos); -} - -static ssize_t lustre_generic_file_write(struct file *file, - struct ccc_io *vio, loff_t *ppos) -{ - return generic_file_aio_write(vio->cui_iocb, vio->cui_iov, - vio->cui_nrsegs, *ppos); -} - static int vvp_io_read_start(const struct lu_env *env, const struct cl_io_slice *ios) { @@ -540,8 +526,11 @@ static int vvp_io_read_start(const struct lu_env *env, file_accessed(file); switch (vio->cui_io_subtype) { case IO_NORMAL: - result = lustre_generic_file_read(file, cio, &pos); - break; + LASSERT(cio->cui_iocb->ki_pos == pos); + result = generic_file_aio_read(cio->cui_iocb, + cio->cui_iov, cio->cui_nrsegs, + cio->cui_iocb->ki_pos); + break; case IO_SPLICE: result = generic_file_splice_read(file, &pos, vio->u.splice.cui_pipe, cnt, @@ -586,7 +575,6 @@ static int vvp_io_write_start(const struct lu_env *env, struct cl_io *io = ios->cis_io; struct cl_object *obj = io->ci_obj; struct inode *inode = ccc_object_inode(obj); - struct file *file = cio->cui_fd->fd_file; ssize_t result = 0; loff_t pos = io->u.ci_wr.wr.crw_pos; size_t cnt = io->u.ci_wr.wr.crw_count; @@ -601,6 +589,8 @@ static int vvp_io_write_start(const struct lu_env *env, */ pos = io->u.ci_wr.wr.crw_pos = i_size_read(inode); cio->cui_iocb->ki_pos = pos; + } else { + LASSERT(cio->cui_iocb->ki_pos == pos); } CDEBUG(D_VFSTRACE, "write: [%lli, %lli)\n", pos, pos + (long long)cnt); @@ -608,8 +598,9 @@ static int vvp_io_write_start(const struct lu_env *env, if (cio->cui_iov == NULL) /* from a temp io in ll_cl_init(). */ result = 0; else - result = lustre_generic_file_write(file, cio, &pos); - + result = generic_file_aio_write(cio->cui_iocb, + cio->cui_iov, cio->cui_nrsegs, + cio->cui_iocb->ki_pos); if (result > 0) { if (result < cnt) io->ci_continue = 0;