Subject: Re: Processes Hanging in a Disk Wait
To: None <firstname.lastname@example.org, email@example.com>
From: Paul Kranenburg <firstname.lastname@example.org>
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.