From owner-freebsd-current@FreeBSD.ORG Wed Oct 5 17:20:33 2005 Return-Path: X-Original-To: freebsd-current@freebsd.org Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 7287A16A41F for ; Wed, 5 Oct 2005 17:20:33 +0000 (GMT) (envelope-from peadar.edwards@gmail.com) Received: from zproxy.gmail.com (zproxy.gmail.com [64.233.162.205]) by mx1.FreeBSD.org (Postfix) with ESMTP id 59A7843D46 for ; Wed, 5 Oct 2005 17:20:31 +0000 (GMT) (envelope-from peadar.edwards@gmail.com) Received: by zproxy.gmail.com with SMTP id z31so67872nzd for ; Wed, 05 Oct 2005 10:20:31 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:reply-to:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=YjzR7hXSw16WiE3kgxGvxa6OFJqkP7mKqNL3FPcoVPXcEAIdeUrufAjgcOaq9RegsgNiiW9se6VMdZG5Ea+tuuzDalHzNGHOfWcc1m8hrrjnDJXz/AqRGH6K2Fpoo0nGvkpLZVNW/2z8XLPhxctNgb5iktGHvtgRT1rPxDc0L7k= Received: by 10.37.12.56 with SMTP id p56mr687653nzi; Wed, 05 Oct 2005 10:20:31 -0700 (PDT) Received: by 10.36.68.16 with HTTP; Wed, 5 Oct 2005 10:20:31 -0700 (PDT) Message-ID: <34cb7c840510051020t58288c7fh2cf889864740adff@mail.gmail.com> Date: Wed, 5 Oct 2005 18:20:31 +0100 From: Peter Edwards To: Jung-uk Kim In-Reply-To: <200510051210.30452.jkim@FreeBSD.org> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline References: <34cb7c8405092815247dc89bf6@mail.gmail.com> <200509291303.41181.jhb@FreeBSD.org> <34cb7c840510050613u36e76be1pef82c41130da8804@mail.gmail.com> <200510051210.30452.jkim@FreeBSD.org> Cc: freebsd-current@freebsd.org Subject: Re: biodone panics X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Peter Edwards List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 05 Oct 2005 17:20:33 -0000 On 10/5/05, Jung-uk Kim 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.