Re: biodone panics

From: Peter Edwards <peadar.edwards_at_gmail.com>
Date: Wed, 5 Oct 2005 18:20:31 +0100
On 10/5/05, Jung-uk Kim <jkim_at_freebsd.org> wrote:
> On Wednesday 05 October 2005 09:13 am, Peter Edwards wrote:
> > Take 2 for the biodone() panics:
> >
> > acd_geom_start() implements request limiting by breaking up a large
> > request in the passed bio into a sequence of smaller ones.  As each
> > request is created,  acd_strategy is invoked to start the IO.
> >
> > However, I think this IO can complete while still issuing the child
> > requests, leading to the parent being retired early. (ie, when a
> > child operation completes, it checks if its the last operation to
> > complete, and, if so, retires the parent: see g_std_done.)
> >
> > The attached patch makes my qemu box much more reliable (I could
> > crash a qemu hosted system 100% with a "tar fc" of the 6.0-BETA
> > bootonly ISO without the patch, and it's gone through many
> > iterations fine with it)
> >
> > Any opinions/testing results welcome.
>
> I think you nailed it!  It's a shame that I had the same theory and I
> was staring at the same code with scratching my head for hours but I
> couldn't find proper fix. :-(  Tested with QEMU 0.7.2 from ports/qemu
> for a while with no regression.

Cool, thanks for the feedback!

>
> BTW, minor style comment.  Please do s/0/NULL/.

Ah. Noted, thanks.
Received on Wed Oct 05 2005 - 15:20:33 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:44 UTC