Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 16 Dec 1998 20:49:41 +0100
From:      Paul van der Zwan <paulz@trantor.stuyts.nl>
To:        Mike Smith <mike@smith.net.au>
Cc:        current@FreeBSD.ORG
Subject:   Re: Weird NFS error using Solaris 7 server 
Message-ID:  <199812161949.UAA31538@trantor.stuyts.nl>
In-Reply-To: Your message of "Tue, 15 Dec 1998 17:58:45 PST." <199812160158.RAA00944@dingo.cdrom.com> 

next in thread | previous in thread | raw e-mail | index | archive | help
> > I did some testing using the following test program:
> > #include <fcntl.h>
> > main()
> > {
> > 	int rv;
> > 	rv=open("testfile1",O_CREAT|O_RDWR|O_EXCL,0666);
> > 	if ( rv < 0 )
> > 		perror("testfile1");
> > 	rv=open("testfile2",O_CREAT|O_RDWR,0666);
> > 	if ( rv < 0 )
> > 		perror("testfile2");
> > }
> > 
> > This program results in a file called 'testfile1' being created on the server
> > but having the creation of 'testfile2' fail with errno=79 ( which means 
> > EOVERFLOW 79    /* value too large to be stored in data type */ 
> > on Solaris )
> > 
> > If I do a snoop for the create requests sent I se the following request for
> > testfile1 :
> > RPC:  ----- SUN RPC Header -----
> > RPC:  
> > RPC:  Record Mark: last fragment, length = 156
> > RPC:  Transaction id = 1478392196
> > RPC:  Type = 0 (Call)
> > RPC:  RPC version = 2
> > RPC:  Program = 100003 (NFS), version = 3, procedure = 8
> > RPC:  Credentials: Flavor = 1 (Unix), len = 52 bytes
> > RPC:     Time = 0
> > RPC:     Hostname = 
> > RPC:     Uid = 544, Gid = 200
> > RPC:     Groups = 200 0 5 14 68 69 70 1000 
> > RPC:  Verifier   : Flavor = 0 (None), len = 0 bytes
> > RPC:  
> > NFS:  ----- Sun NFS -----
> > NFS:  
> > NFS:  Proc = 8 (Create file)
> > NFS:  File handle = [008A]
> > NFS:   0080000800000002000A000000000002694370EA000A000000000002694370EA
> > NFS:  File name = testfile1
> > NFS:  Guard = 7F00000103000000
> > NFS:  
> > 
> > And the following for testfile2:
> > RPC:  ----- SUN RPC Header -----
> > RPC:  
> > RPC:  Record Mark: last fragment, length = 192
> > RPC:  Transaction id = 1478392200
> > RPC:  Type = 0 (Call)
> > RPC:  RPC version = 2
> > RPC:  Program = 100003 (NFS), version = 3, procedure = 8
> > RPC:  Credentials: Flavor = 1 (Unix), len = 52 bytes
> > RPC:     Time = 0
> > RPC:     Hostname = 
> > RPC:     Uid = 544, Gid = 200
> > RPC:     Groups = 200 0 5 14 68 69 70 1000 
> > RPC:  Verifier   : Flavor = 0 (None), len = 0 bytes
> > RPC:  
> > NFS:  ----- Sun NFS -----
> > NFS:  
> > NFS:  Proc = 8 (Create file)
> > NFS:  File handle = [008A]
> > NFS:   0080000800000002000A000000000002694370EA000A000000000002694370EA
> > NFS:  File name = testfile2
> > NFS:  Method = Unchecked
> > NFS:    Mode = 0644
> > NFS:     Setuid = 0, Setgid = 0, Sticky = 0
> > NFS:     Owner's permissions = rw-
> > NFS:     Group's permissions = r--
> > NFS:     Other's permissions = r--
> > NFS:  User ID = (not set)
> > NFS:  Group ID = (not set)
> > NFS:  Size = (not set)
> > NFS:  Access time = -1  (set to client time)
> > NFS:  Modification time = -1  (set to client time)
> > NFS:  
> > NFS:  
> > 
> > So the open with the O_EXCL flag ( which succeeds ) shows a field decode by
> > snoop as Guard and the failing request shows a lot of other fields.
> 
> This looks like snoop is failing to usefully process the packet.  Can 
> you feed the trace to Ethereal and see what it has to say about it?
> 
The version of ethereal I have ( the one from the ports) cannot decode NFS 
packets. Maybe you have another version.

I have checked rfc1813 for the NFS v3 spec and if the client is really setting 
the times to -1 it is not following the spec. It should fill a       
struct nfstime3 {
         uint32   seconds;
         uint32   nseconds;
      };
with the current time on the client and -1 is not a legal uint32. I started looking 
into the client code but haven't located the error ( yet).



> > Hope someone can use this to find out what is wrong.
> > ( If needed I can send the full snoop capture )
> 
> If you've got it in a format that can be used by other programs, please 
> do make it available somewhere.

I have put the raw snoop capture on http://www.xs4all.nl/~paulz/snoop.log.gz (it is 
only 820 bytes)

	Paul
-- 
Paul van der Zwan		paulz @ trantor.stuyts.nl
"I think I'll move to theory, everything works in theory..."



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199812161949.UAA31538>