Messages in this thread | | | Subject | NFSv3: Summary of recent bugfixes/updates to the NFSv3 patches... | From | Trond Myklebust <> | 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/
| |