[LWN Logo]

To:     linux-kernel@vger.rutgers.edu
Subject: NFSv3: Summary of recent bugfixes/updates to the NFSv3 patches...
From:   Trond Myklebust <trond.myklebust@fys.uio.no>
Date:   31 Aug 1999 17:50:32 +0200


Hi everybody,

  A few longstanding, but important bugs have been fixed recently in
the NFSv3 patches for linux. I'd therefore like to point out a few of
these recent (past 3 weeks) fixes and cleanups:

SunRPC code:
-----------

 1) NFS over TCP now works as expected. Previous versions were a tad
    unreliable, with transfer speeds being a factor 10 or so lower
    than the UDP (when the thing wasn't hanging 8-(). Now tests
    indicate a reduction in speed is of the order 20% on a local
    network, which is more in line with expectations.
    I'd be very interested in hearing other people's experiences here.

 2) Problem of waiting on socket buffer memory fixed. If a socket
    buffer runs out of write buffer memory (there's only 64k per
    socket), the code will now sleep (or send off requests to other
    NFS partitions) until there is enough free memory.

    This problem was the cause of a certain amount of network storms
    against Solaris machines. The latter prefer 32k wsizes (+ RPC call
    header), meaning that the socket could only buffer 1 request at a
    time. This lead to the transmission looping and sending off lots
    of headerless UDP fragments.

 3) Spinlocking for improved SMP safeness. In principle, the kernel
    lock should be held whenever we're in the RPCIOD code, or the NFS
    code.
    There was, however, some indication of corruption of wait queues
    on SMP-machines. Possibly due to manipulations of the queue in
    interrupts and/or bottom_halves?


NFS code:
--------

 1) A long-standing memory leak involving large reads has been fixed
    (if the read failed, the allocated pages beyond 4k were sometimes
    not being freed).

 2) Renaming of directories should now be fixed again.

 3) New stale inode detection. Is much more relaxed. This means that
    we avoid races with stale file handles. It should hopefully also
    work better than the old code against named sockets.

    In addition, the NFSv3 inode allocation code has been rewritten
    for greater clarity.

 4) The updating of 'atime' should hopefully be a bit more
    consistent. If we've been reading the file from the cache, then
    the cached value of atime won't get set back again by the next
    write/getattr/whatever statement that happens to return the
    server's idea of what atime should be.


The current version of the NFSv3 patches is 0.11.6. It should patch
cleanly against stock linux-2.2.10, 2.2.11 and 2.2.12.


You may pick up the latest NFSv3 patches at:

http://www.fys.uio.no/~trondmy/src/linux-2.2.12-nfsv3.dif.bz2

Please note that in order to mount NFSv3 partitions, you will need a
patched version of the 'mount' command. A Redhat 6.0 RPM can be found
at

http://www.fys.uio.no/~trondmy/src/nfsv3-mount/mount-2.9o-1.2.i386.rpm

The source RPM can be found in the same directory. In addition, there
is a patch against stock 'mount-2.9o'.


Finally: please note the existence of a TODO list which should
(hopefully) be updated regularly with known bugs/missing features etc.
Please find the latter at:

http://www.fys.uio.no/~trondmy/src/TODO

Cheers,
  Trond

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/