[Gluster-devel] gluster doesn't like Oracle's FSINFO RPC call

Niels de Vos ndevos at redhat.com
Thu Apr 11 11:42:28 UTC 2013


On Mon, Apr 08, 2013 at 01:57:55PM -0400, Michael Brown wrote:
> I'm trying to get Oracle's DNFS working against gluster's internal NFS
> and I've run into a snag. After Oracle mounts the exported NFS
> filesystem the FSINFO call fails.
> 
> Let's look with wireshark:
...
> *Remote Procedure Call, Type:Call XID:0x47349478*
>     Program: NFS (100003)
>     Program Version: 3
>     Procedure: FSINFO (19)
> Network File System, FSINFO Call DH:0x10650fe6
>     [Program Version: 3]
>     [V3 Procedure: FSINFO (19)]
>     object
>         length: 34
>         [hash (CRC-32): 0x10650fe6]
>         [Name: 192.168.10.1:/gv0/fleming3/db0/ALTUS_data]
>         filehandle:
> 3a4f20117b487f884f169490a0349afacf71331965f573144e93b289a395148edfe5

Bytes of the object parameter:

	    < length  > <         10 bytes          >
00a0  .. .. 00 00 00 22 3a 4f 20 11 7b 48 7f 88 4f 16   .....":O .{H..O.
....  <               16 bytes                      >
00b0  94 90 a0 34 9a fa cf 71 33 19 65 f5 73 14 4e 93   ...4...q3.e.s.N.
....  <      8 bytes        >
00c0  b2 89 a3 95 14 8e df e5                           ........

Makes a total of a 34 byte sized fhandle.

...
> Network File System, FSINFO Call DH:0xb2ae682f
>     [Program Version: 3]
>     [V3 Procedure: FSINFO (19)]
>     object
>         length: 34
>         [hash (CRC-32): 0xb2ae682f]
>         [Name: 192.168.10.1:/gv0/fleming1/db0/ALTUS_data]
>         filehandle:
> 3a4f20117b487f884f169490a0349afacf71e8bd0e2198c34cb88a0231dbeb071035

Bytes of the object parameter:

			< length  > <    6 bytes    >
00b0  .. .. .. .. .. .. 00 00 00 22 3a 4f 20 11 7b 48   .........":O .{H
....  <               16 bytes                      >
00c0  7f 88 4f 16 94 90 a0 34 9a fa cf 71 e8 bd 0e 21   ..O....4...q...!
....  <               12 bytes          > < ? >
00d0  98 c3 4c b8 8a 02 31 db eb 07 10 35 00 00         ..L...1....5..

Note the two 0-bytes at the end. Thinking about that, the following may 
be the case:

XDR (http://tools.ietf.org/html/rfc4506, the encoding used for the RPC 
protocol) uses 'blocks' for alignment. A fhandle byte array that is 
34-bytes long, needs to be 34 / 4 + 1 = 36 bytes in size. The 'length' 
given in the structure tells the consumer to ignore the two tailing 
bytes.

The NFSv3 specification (http://tools.ietf.org/html/rfc1813#page-21) 
defines the nfs_fh3 as a opaque (not bytes) structure.

> So for some reason, gluster is happy with Linux's request but not 
> Oracle's.

My guess is that this (untested) change would fix it, can you try that?

--- a/rpc/xdr/src/xdr-nfs3.c
+++ b/rpc/xdr/src/xdr-nfs3.c
@@ -184,7 +184,7 @@ xdr_specdata3 (XDR *xdrs, specdata3 *objp)
 bool_t
 xdr_nfs_fh3 (XDR *xdrs, nfs_fh3 *objp)
 {
-	 if (!xdr_bytes (xdrs, (char **)&objp->data.data_val, (u_int *) &objp->data.data_len, NFS3_FHSIZE))
+	 if (!xdr_opaque (xdrs, &objp, (u_int *) &objp->data.data_len))
 		 return FALSE;
 	return TRUE;
 }


HTH,
Niels

> 
> All I get out of gluster is:
> [2013-04-08 12:54:32.206312] E [nfs3.c:4741:nfs3svc_fsinfo] 0-nfs-nfsv3:
> Error decoding arguments
> 
> 
> I've attached abridged packet captures and text explanations of the
> packets (thanks to wireshark).
> 
> Can someone please look at this and determine if it's gluster's parsing
> of the RPC call to blame, or if it's Oracle?
> 
> This is the same setup on which I reported the NFS race condition bug.
> It does have that patch applied.
> Details:
> http://lists.gnu.org/archive/html/gluster-devel/2013-04/msg00014.html
> 
> Thanks,
> 
> Michael
> 
> -- 
> Michael Brown               | `One of the main causes of the fall of
> Systems Consultant          | the Roman Empire was that, lacking zero,
> Net Direct Inc.             | they had no way to indicate successful
> ?: +1 519 883 1172 x5106    | termination of their C programs.' - Firth
> 





> _______________________________________________
> Gluster-devel mailing list
> Gluster-devel at nongnu.org
> https://lists.nongnu.org/mailman/listinfo/gluster-devel


-- 
Niels de Vos
Sr. Software Maintenance Engineer
Support Engineering Group
Red Hat Global Support Services




More information about the Gluster-devel mailing list