tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Finding out where biowait is stuck



On Mon, Feb 23, 2009 at 09:47:42AM -0500, Allen Briggs wrote:

> The process is in src/sys/vfs_bio.c:biowait(),
> but the question is why isn't it getting woken up--or if it's
> getting woken up, why aren't B_DONE or B_DELWRI set?

I closed a PR with a similar symptom last year. We had sloppy manipluation
of buf::b_flag. Updates were made without any protection against disk
interrupts.

It was exacerbated by the advent of RISC (load, modify, store) and softdep.
A large chunk of the softdep code runs in interrupt context, which broke
some of the undocumented assumptions that the pre-5.0 buffer code made about
updates to b_flag.

The good news is that it is fixed in 5.0. The bad news is that there is not
yet any remediation for this issue in earlier releases (that I know of).

Thanks,
Andrew


Home | Main Index | Thread Index | Old Index