Bug 223755

Summary: nfs protocol V3 :write procedure patch
Product: Red Hat Enterprise Linux 5 Reporter: Xuui <xur>
Component: kernelAssignee: Peter Staubach <staubach>
Status: CLOSED DUPLICATE QA Contact: Brian Brock <bbrock>
Severity: medium Docs Contact:
Priority: medium    
Version: 5.0CC: jlayton, steved
Target Milestone: ---   
Target Release: ---   
Hardware: i386   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2007-05-02 15:41:31 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Xuui 2007-01-22 07:42:10 UTC
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

Comment 1 Jeff Layton 2007-04-25 15:32:28 UTC
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.


Comment 3 Peter Staubach 2007-05-02 15:41:31 UTC

*** This bug has been marked as a duplicate of 228854 ***