 - In a Giantless world, the vn_lock() in vcanrecycle() could legitimately    fail.  Remove the panic from that case and document why it might fail.  - Document the reason for calling cache_purge() on a newly created vnode.  - In insmntque() order the operations so that we can call mtx_unlock()    one fewer times.  This makes the code somewhat clearer as well.  - Add XXX comments in sched_sync() and vflush().  - In vget(), do not sleep while waiting for XLOCK to clear if LK_NOWAIT is    set.  - In vclean() we don't need to acquire a lock around a single TAILQ_FIRST    call.  It's ok if we race here, the vinvalbuf will just do nothing.  - Increase the scope of the lock in vgonel() to reduce the number of lock    operations that are performed.
 - In a Giantless world, the vn_lock() in vcanrecycle() could legitimately
   fail.  Remove the panic from that case and document why it might fail.
 - Document the reason for calling cache_purge() on a newly created vnode.
 - In insmntque() order the operations so that we can call mtx_unlock()
   one fewer times.  This makes the code somewhat clearer as well.
 - Add XXX comments in sched_sync() and vflush().
 - In vget(), do not sleep while waiting for XLOCK to clear if LK_NOWAIT is
   set.
 - In vclean() we don't need to acquire a lock around a single TAILQ_FIRST
   call.  It's ok if we race here, the vinvalbuf will just do nothing.
 - Increase the scope of the lock in vgonel() to reduce the number of lock
   operations that are performed.

jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase