vfsx20.patch available - vfs work (expert developers only)

Another regular vfs patch. Again, expert developers only.
fetch http://leaf.dragonflybsd.org/~dillon/vfsx20.patch
This one adds fixes for scattered bugs and a feature or two. A number
of these issues have already been committed and the stable tag slipped
so they don't physically appear in the patch set.
Thanks to everyone who sent in bug reports and especially David Rhodus
for providing a number of great kernel crash dumps.
* A bug in the nfs server's directory scan code could cause the nfs
server to panic.
* Added an assertion to try to catch a vm_page panic that DR is getting.
It is possibly related to fictitious page mappings (device mmap).
* A fix to softupdates that can cause FS corruption if the
devvp for the filesystem is not VMIO backed (-> reported to Kirk).
Note: this bug probably did not effect FreeBSD. [ committed and
stable slipped ].
* A fix to UFS that was preventing the filesystem devvp from being
marked as being VMIO backed. I apparently broke this about a month
ago and never realized it. Apart from the softupdates bug it tickled
not having the devvp VMIO backed only reduced filesystem performance
slightly. [ committed and stable slipped ].
* Use a non-blocking version of BUF_REFCNTNB. The ATA interrupt
path was blocking in biodone() in a number of places which had
BUF_REFCNT() assertions. (I don't think this is related to the
ATA timeout problem Jonathon McKitrick is reporting but there is
a small chance that it is). [ committed and stable slipped ].
* Someone pointed out a thread on the FBsd lists with regards to
shortcutting device operations for /dev/null and /dev/zero to
not have to run through the VFS (and in particular lock the vnode).
This turned out to be trivial to implement, it simply required a
special struct fileops with customized read and write vectors.
dd performance e.g. writing to /dev/null with small block sizes
is noticably improved though I doubt there will be much real-world
improvement. Still, it allowed me to cleanup some other issues
in the file pointer code so...
Still TODO before I commit this mess to HEAD: unionfs, nullfs.
-Matt