Replace the global buffer cache hash table with a per-vnode red-black tree.
Add a B_HASHED b_flags bit as a sanity check. Remove the invalhash junk
and replace with assertions in several cases where the buffer must already
not be hashed. Get rid of incore() and gbincore() and replace with a new
function called findblk().
Merge the new RB management with bgetvp(), the two are now fully integrated.
Previous work has turned reassignbuf() into a mostly degenerate call, simplify
its arguments and functionality to match. Remove an unnecessary reassignbuf()
call from the NFS code. Get rid of pbreassignbuf().
Adjust the code in several places where it was assumed that calling
BUF_LOCK() with LK_SLEEPFAIL after previously failing with LK_NOWAIT
would always fail. This code was used to sleep before a retry. Instead,
if the second lock unexpectedly succeeds, simply issue an unlock and retry
anyway.
Testing-by: Stefan Krueger <skrueger@meinberlikomm.de>
13 files changed: