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>
