KKASSERT(bp->b_flags & B_VMIO);
looks to be incorrect given
Not really sure how this "else" case happen though, as filesystem buffers are all B_VMIO (if not IO_VMIO).
Updated by dillon about 2 years ago
The buffer cache used to have B_MALLOC buffers, but I recently removed those so it should now generally only be able to have B_VMIO buffers. There are specialized buffers that are not B_VMIO, but they are not attached to vnodes and do not use the brelse() mechanism.
I'm not sure if I want to remove that else clause yet (line 1520-1531), but it does warrant clarification in the code comment so I will adjust the comment for now.