Commit dac3b105 authored by Trond Myklebust's avatar Trond Myklebust
Browse files

NFSv4.2: Handle hole lengths that exceed the READ_PLUS read buffer



If a hole extends beyond the READ_PLUS read buffer, then we want to fill
just the remaining buffer with zeros. Also ignore eof...

Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
parent 82f98c8b
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -1080,6 +1080,12 @@ static int decode_read_plus_hole(struct xdr_stream *xdr,
		}
		length -= args->offset + res->count - offset;
	}
	if (length + res->count > args->count) {
		*eof = 0;
		if (unlikely(res->count >= args->count))
			return 1;
		length = args->count - res->count;
	}
	recvd = xdr_expand_hole(xdr, res->count, length);
	res->count += recvd;