Fix a bug in nfsrv_read() that caused the replies to certain NFSv3

short read operations at the end of a file to not have the "eof"
flag set as they should. The problem is that the requested read
count was compared against the rounded-up reply data length instead
of the actual reply data length. This bug appears to have been
introduced in revision 1.78 (June 1999). It causes first-time reads
of certain file sizes (e.g 4094 bytes) to fail with EIO on a RedHat
9.0 NFSv3 client.

MFC after:	1 week
This commit is contained in:
iedowse 2003-06-24 19:04:26 +00:00
parent 94d0485e2e
commit 365585637a

View File

@ -954,7 +954,7 @@ nfsrv_read(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
nfsm_adj(mb, len - tlen, tlen - cnt);
if (v3) {
*tl++ = txdr_unsigned(cnt);
if (len < reqlen)
if (cnt < reqlen)
*tl++ = nfsrv_nfs_true;
else
*tl++ = nfsrv_nfs_false;