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/