From 211b00d651bbc57d9ab9d24d6d7e94b013957cf1 Mon Sep 17 00:00:00 2001 From: Jinshan Xiong Date: Thu, 23 Feb 2012 11:57:54 -0800 Subject: [PATCH] LU-1109 llite: do splice read stripe by stripe If nfsd is reading an across stripe buffer, and if the first stripe happens to be 64KB(PIPE_BUFFERS*PAGE_SIZE), then first read will occupy all pipe buffers and this makes nfsd stuck if it reads the next stripe immediately. Signed-off-by: Jinshan Xiong Change-Id: I13cb54b37f738ee3c081dff1929630ea523b77fd Reviewed-on: http://review.whamcloud.com/2182 Tested-by: Hudson Tested-by: Maloo Reviewed-by: Fan Yong Reviewed-by: Oleg Drokin --- lustre/llite/vvp_io.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lustre/llite/vvp_io.c b/lustre/llite/vvp_io.c index 4b031ac..e3052fe 100644 --- a/lustre/llite/vvp_io.c +++ b/lustre/llite/vvp_io.c @@ -552,6 +552,10 @@ static int vvp_io_read_start(const struct lu_env *env, result = generic_file_splice_read(file, &pos, vio->u.splice.cui_pipe, cnt, vio->u.splice.cui_flags); + /* LU-1109: do splice read stripe by stripe otherwise if it + * may make nfsd stuck if this read occupied all internal pipe + * buffers. */ + io->ci_continue = 0; break; #endif default: -- 1.8.3.1