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:
parent
f1f207997d
commit
9c99a077eb
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user