Create a non-blocking version of BUF_REFCNT() called BUF_REFCNTNB() to be
authorMatthew Dillon <dillon@dragonflybsd.org>
Tue, 9 Nov 2004 17:36:42 +0000 (17:36 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Tue, 9 Nov 2004 17:36:42 +0000 (17:36 +0000)
commit77bb9400f69fcbdf98627a45a8df6db974145f1a
tree14078fc378e80b384871f7d57e09b827c8922701
parent5eabb94ddce3a3edfdd539e0301f0d59ca2f81bd
Create a non-blocking version of BUF_REFCNT() called BUF_REFCNTNB() to be
used for non-critical KASSERT()'s or in situations where the buffer lock
is in a known state.

This fixes a blocking condition in the ATA interrupt path.  The normal
BUF_REFCNT() calls lockcount() which obtains a token which caused the
interrupt thread to temporarily block in biodone() due to a KASSERT.

Found-from: kernel core provided by David Rhodus.
sys/kern/vfs_bio.c
sys/sys/buf2.h