Hi: I hope this is the right place for this. My group is engaged in the NFSV3 protocol comformance test.it means ,we want to prove whether the realization of the NFSV3 protocol in all versions of the REDHAT is according to the RFC(here ,we use RFC 1813). When we test the WRITE procedure in the realization of the REDHAT with the newest kernel ,we find some inconsistent definitions between the newest kernel and RFC1813.P49 struct WRITE3args { nfs_fh3 file; offset3 offset; count3 count; stable_how stable; opaque data<>; }; struct WRITE3resok { wcc_data file_wcc; count3 count; stable_how committed; writeverf3 verf; }; struct WRITE3resfail { wcc_data file_wcc; }; count The number of bytes of data to be written. If count is 0, the WRITE will succeed and return a count of 0, barring errors due to permissions checking. The size of data must be less than or equal to the value of the wtmax field in the FSINFO reply structure for the file system that contains file. If greater, the server may write only wtmax bytes, resulting in a short write. It told us that when the argument count is zero ,the write procedure still should be succeed.But in the test ,when we send the packet with the count equal to zero,the server will return fail with the rpc_garbage error.Obviously it is inconsistent with RFC definition.So we make the patch as follows: Signed-off-by: xurui <xur> --- linux-2.6.19.1/fs/nfsd/nfs3xdr.c 2006-12-12 03:32:53.000000000 +0800 +++ linux-2.6.19.1/fs/nfsd/nfs3xdr.new.c 2007-01-03 18:23:09.000000000 +0800 @@ -389,7 +389,7 @@ nfs3svc_decode_writeargs(struct svc_rqst rqstp->rq_vec[v].iov_len = len; args->vlen = v+1; - return args->count == args->len && rqstp->rq_vec[0].iov_len > 0; + return args->count == args->len; } int Thanks Xu Rui
Have you pushed this patch upstream as well? I'd like to see this proposed and included there before it hits any version of RHEL.
*** This bug has been marked as a duplicate of 228854 ***