From owner-freebsd-current@FreeBSD.ORG Tue Jan 20 11:54:16 2009 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 72FE91065675 for ; Tue, 20 Jan 2009 11:54:16 +0000 (UTC) (envelope-from christoph.mallon@gmx.de) Received: from mail.gmx.net (mail.gmx.net [213.165.64.20]) by mx1.freebsd.org (Postfix) with SMTP id B5BFE8FC14 for ; Tue, 20 Jan 2009 11:54:15 +0000 (UTC) (envelope-from christoph.mallon@gmx.de) Received: (qmail invoked by alias); 20 Jan 2009 11:54:14 -0000 Received: from p54A3DE90.dip.t-dialin.net (EHLO tron.homeunix.org) [84.163.222.144] by mail.gmx.net (mp044) with SMTP; 20 Jan 2009 12:54:14 +0100 X-Authenticated: #1673122 X-Provags-ID: V01U2FsdGVkX1+utelR/Y6ujdgyu/bVfT2n6VYnVrr0K6MTdwFu20 0qyFq5MfdjBtUp Message-ID: <4975BB65.2020502@gmx.de> Date: Tue, 20 Jan 2009 12:54:13 +0100 From: Christoph Mallon User-Agent: Thunderbird 2.0.0.19 (X11/20090103) MIME-Version: 1.0 To: FreeBSD Current References: <496D94FD.9030300@gmx.de> <4975AACA.3050906@gmx.de> In-Reply-To: <4975AACA.3050906@gmx.de> Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit X-Y-GMX-Trusted: 0 X-FuHaFi: 0.5600000000000001 Cc: uwe@grohnwaldt.eu, FreeBSD Hackers , miwi@freebsd.org Subject: Re: Question about panic in brelse() X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jan 2009 11:54:16 -0000 Christoph Mallon schrieb: > @@ -1340,7 +1340,8 @@ > } > TAILQ_INSERT_HEAD(&bufqueues[bp->b_qindex], bp, b_freelist); > /* buffers with junk contents */ > - } else if (bp->b_flags & (B_INVAL | B_NOCACHE | B_RELBUF) || > + } else if (bp->b_flags & (B_INVAL | B_RELBUF) || > + ((bp->b_flags & (B_NOCACHE | B_DELWRI)) == B_NOCACHE) > (bp->b_ioflags & BIO_ERROR)) { > bp->b_flags |= B_INVAL; > bp->b_xflags &= ~(BX_BKGRDWRITE | BX_ALTDATA); I just realised that somehow a || got lost. The diff should read: @@ -1340,7 +1340,8 @@ } TAILQ_INSERT_HEAD(&bufqueues[bp->b_qindex], bp, b_freelist); /* buffers with junk contents */ - } else if (bp->b_flags & (B_INVAL | B_NOCACHE | B_RELBUF) || + } else if (bp->b_flags & (B_INVAL | B_RELBUF) || + ((bp->b_flags & (B_NOCACHE | B_DELWRI)) == B_NOCACHE) || (bp->b_ioflags & BIO_ERROR)) { bp->b_flags |= B_INVAL; bp->b_xflags &= ~(BX_BKGRDWRITE | BX_ALTDATA);