Subject: Re: Processes Hanging in a Disk Wait
To: None <r.black@ic.ac.uk, mycroft@mit.edu>
From: Paul Kranenburg <pk@cs.few.eur.nl>
List: current-users
Date: 06/11/1996 16:34:25
> > num_output = 1;
> > read = 0;
> > write = 0;
> > referenced = 0;
> > flags = VXLOCK | VBWAIT;
> 
> This indicates that a buffer is never being freed.  That's most likely
> a bug in the low-level SCSI driver.

I've investigated this in some detail. It appears that the buffers on which
IO was started (and bumped this vnode's v_numoutput) have long since been
freed and disassociated from the vnode. Typically, the vnode's `dirty' and
`clean' buffer lists are empty and the `hold' count is 0.

I'm blaming a classic race condition that existed in vfs_bio.c, exposing
`v_numoutput' and the vnode's block lists to concurrent access.

-pk