[comp.protocols.nfs] NFS "null block" bug encountered + FIX

siegel@magni.cs.cornell.edu (Alexander Siegel) (10/10/88)

In article <7376@bloom-beacon.MIT.EDU> jtkohl@athena.mit.edu (John T Kohl) writes:
>At MIT Project Athena, we have been bitten hard by a problem in the 3.0
>(and 3.2) NFSSRC (VAX and IBM/RT 4.3BSD UNIX) handling of non-idempotent
...
>The fix we have implemented at Project Athena is a protocol revision,
...
>Our fix is to send the last known modification time in the truncation
>request to the NFS server.  When the server sees a truncation request

This is just a simple serialization protocol.  Why not just use
TCP for transmission instead of UDP?



Alex Siegel - CS graduate drudge at Cornell
a.k.a. Scimitar;  a.k.a. Phineas Ginn (SCA);  a.k.a. Trash
siegel@cs.cornell.edu   (607)255-1165

silveri%pugsley@Sun.COM (Chris Silveri) (10/11/88)

In article <7376@bloom-beacon.MIT.EDU>, jtkohl@athena.mit.edu (John T Kohl) writes:
> At MIT Project Athena, we have been bitten hard by a problem in the 3.0
> (and 3.2) NFSSRC (VAX and IBM/RT 4.3BSD UNIX) handling of non-idempotent
> requests, such as create-with-truncate.  This particular bug evidenced
> itself by creating "holes" in files and unexpectedly truncating files
> with no error indicated to the client user-level code.
> 
> Our fix is to send the last known modification time in the truncation
> request to the NFS server.  When the server sees a truncation request
> with a valid modification time, it checks this time against the time
> stored in the filesystem inode.  If they match, the truncation is
> performed, otherwise the packet is treated as a duplicate.

NFS version 3 addresses the problem of SETATTR as well as the other
non-idempotent procedures. Clients will have to supply a correct
"ctime" to the server. If the "ctime" does not match, the server returns
a duplicate request error. 

Other changes include the addition of an exclusive flag to 
CREATE, and fhandles of targets to destroy in non-exclusive 
CREATEs, REMOVES, etc.

And much more...


The protocol specification for NFS version 3 is in public domain
and has been circulated at several conferences (e.g. Usenix in S.F).
We welcome your comments and suggestions about the spec. A special
mail alias has been setup {sun!nfs3 or nfs3@sun.com} to receive them.


*** NOTE *** Currently all NFS implementations use version 2 
of the NFS protocol !!!



Christopher Silveri		Sun Microsystems