From: Jinshan Xiong Date: Thu, 23 Feb 2012 19:57:54 +0000 (-0800) Subject: LU-1109 llite: do splice read stripe by stripe X-Git-Tag: 2.1.58~20 X-Git-Url: https://git.whamcloud.com/gitweb?a=commitdiff_plain;h=211b00d651bbc57d9ab9d24d6d7e94b013957cf1;p=fs%2Flustre-release.git 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 --- 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: