From 5377b27b145edf113bf35224ba5d69e45bc9af6f Mon Sep 17 00:00:00 2001 From: Jinshan Xiong Date: Tue, 11 Feb 2014 11:58:32 -0800 Subject: [PATCH] LU-4614 llite: remove lustre_generic_file_{read,write} It looks like lustre_generic_file_{read,write} are a holdover from 2.6.19 where generic_file_aio_read() replaced generic_file_readv() and cross-kernel interoperability was required for some period of time. Lustre has since removed support for those older kernels, but it looks like the wrappers were not deleted at that time. This patch will delete them. Pass &iocb->ki_pos as the last argument for these functions instead of crw_pos, since this is the convention for other callers. Verify that this is the same as the current crw_pos argument. This code can likely be cleaned up further in a later patch. Signed-off-by: Jinshan Xiong Change-Id: Id19edacf93ee2538634feb95580ab885f6069ee7 Reviewed-on: http://review.whamcloud.com/9230 Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Andreas Dilger Reviewed-by: Bobi Jam Reviewed-by: Yang Sheng --- lustre/include/lclient.h | 2 +- lustre/llite/file.c | 4 ---- lustre/llite/llite_internal.h | 10 ---------- lustre/llite/vvp_io.c | 33 ++++++++++++--------------------- 4 files changed, 13 insertions(+), 36 deletions(-) diff --git a/lustre/include/lclient.h b/lustre/include/lclient.h index 3344160..ac1dbc8 100644 --- a/lustre/include/lclient.h +++ b/lustre/include/lclient.h @@ -124,7 +124,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 other 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/lustre/llite/file.c b/lustre/llite/file.c index 9948641..0abafda 100644 --- a/lustre/llite/file.c +++ b/lustre/llite/file.c @@ -1164,10 +1164,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/lustre/llite/llite_internal.h b/lustre/llite/llite_internal.h index 702783e..07adcd1 100644 --- a/lustre/llite/llite_internal.h +++ b/lustre/llite/llite_internal.h @@ -993,8 +993,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 }; @@ -1006,10 +1004,6 @@ struct vvp_io { union { struct { - read_actor_t cui_actor; - void *cui_target; - } sendfile; - struct { struct pipe_inode_info *cui_pipe; unsigned int cui_flags; } splice; @@ -1065,10 +1059,6 @@ struct vvp_io_args { 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; } splice; diff --git a/lustre/llite/vvp_io.c b/lustre/llite/vvp_io.c index 36ef95e..724a3f5 100644 --- a/lustre/llite/vvp_io.c +++ b/lustre/llite/vvp_io.c @@ -54,7 +54,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) { @@ -505,20 +505,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) { @@ -568,8 +554,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, @@ -796,7 +785,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; @@ -813,15 +801,18 @@ 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); 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) { result = vvp_io_write_commit(env, io); if (cio->u.write.cui_written > 0) { -- 1.8.3.1