Date: Wed, 3 Jan 2001 14:40:40 -0800 (PST) From: Matt Dillon <dillon@earth.backplane.com> To: Marc Culler <culler@math.uic.edu> Cc: freebsd-stable@FreeBSD.ORG Subject: Re: Bug in NFSv3 client Message-ID: <200101032240.f03MeeQ51401@earth.backplane.com> References: <20010103155533.B71238@math.uic.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
:Dear FreeBSD folks:
:
:There is a bug in the NFS version 3 client which results in a bad time
:stamp when a file is created with the O_EXCL flag.
:
:A test program which produces the bug is at the end of the file. (It
:is actually the same program which was used to illustrate a different
:bug in the NFSv3 server in December 1999.)
:
:We are running a FreeBSD NFS server with Solaris, FreeBSD and Linux
:clients. The bad time stamps seem to be created by the FreeBSD
:clients, although only the Solaris clients complain about it. The
:others apparently ignore it.
:
:The test program creates two files, one with the O_EXCL flag set and
:one without. Then it prints out the access time, modification time,
:and status change time of the two files. PLEASE NOTE THE ACCESS TIMES!
:...
Hmm. On the face of it, looking at the code, it appears that
the NFSV3CREATE_EXCLUSIVE generation code is generating
two create_verf RPC elements instead of one, causing the
timestamp that occurs later to be at the wrong offset.
See line 1399 if /usr/src/sys/nfs/nfs_vnops.c
#ifdef INET
if (!TAILQ_EMPTY(&in_ifaddrhead))
*tl++ = IA_SIN(in_ifaddrhead.tqh_first)->sin_add
r.s_addr;
else
#endif
*tl++ = create_verf; <<<<<<<<<<<<<< this guy
*tl = ++create_verf;
I have not tested this idea at all, but please try removing the
indicated line above, recompile the FreeBSD client's kernel, and tell
me if that solves your problem.
-Matt
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-stable" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200101032240.f03MeeQ51401>
