From owner-freebsd-geom@FreeBSD.ORG Tue Apr 21 10:30:03 2009 Return-Path: Delivered-To: freebsd-geom@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4BE64106564A; Tue, 21 Apr 2009 10:30:03 +0000 (UTC) (envelope-from lulf@FreeBSD.org) Received: from bene2.itea.ntnu.no (bene2.itea.ntnu.no [IPv6:2001:700:300:3::57]) by mx1.freebsd.org (Postfix) with ESMTP id 9661B8FC0A; Tue, 21 Apr 2009 10:30:02 +0000 (UTC) (envelope-from lulf@FreeBSD.org) Received: from localhost (localhost [127.0.0.1]) by bene2.itea.ntnu.no (Postfix) with ESMTP id 38D9C9000D; Tue, 21 Apr 2009 12:30:01 +0200 (CEST) Received: from carrot (gaupe.stud.ntnu.no [IPv6:2001:700:300:3::184]) by bene2.itea.ntnu.no (Postfix) with ESMTP id AA30A9000B; Tue, 21 Apr 2009 12:30:00 +0200 (CEST) Date: Tue, 21 Apr 2009 13:30:28 +0200 From: Ulf Lilleengen To: Pawel Jakub Dawidek Message-ID: <20090421113028.GC21043@carrot> References: <200904191010.n3JAA6lk068313@freefall.freebsd.org> <20090421093011.GB7771@mail.wheel.pl> <20090421111559.GA21043@carrot> <20090421102802.GC7771@mail.wheel.pl> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20090421102802.GC7771@mail.wheel.pl> User-Agent: Mutt/1.5.19 (2009-01-05) X-Virus-Scanned: Debian amavisd-new at bene2.itea.ntnu.no Cc: freebsd-geom@FreeBSD.org Subject: Re: kern/133604: [gvinum] [panic] writing to gjournal on a gvinum volume X-BeenThere: freebsd-geom@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: GEOM-specific discussions and implementations List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 Apr 2009 10:30:03 -0000 On tir, apr 21, 2009 at 12:28:02pm +0200, Pawel Jakub Dawidek wrote: > On Tue, Apr 21, 2009 at 01:16:00PM +0200, Ulf Lilleengen wrote: > > On tir, apr 21, 2009 at 11:30:11am +0200, Pawel Jakub Dawidek wrote: > > > The bio_cflags field is for consumer use only (in this case gjournal. As > > > provide you should use bio_pflags. > > > > > Yes, but shouldn't cflags be used for the BIOs that gvinum issue downwards > > when it is a consumer? Like this: > > > > gjournal (consumer) > > | > > gvinum (provider) > > gvinum (consumer) > > | > > disk (provider) > > > > I think the problem is that it has to check where the BIO comes from when > > picking a BIO from the input queue. In this case, it misinterpreted the > > gjournal BIO as an internal DONE bio, so if the originator of the BIO is > > known, it can determine if cflags is actually its own. Is this making sense? > > One never passes received bio down, but instead bio is cloned, modified Yes, that's what I meant. > and passed down, so in your case: > > gjournal (consumer) > | > bio1 > | > gvinum (provider) > gvinum (consumer) > | > bio2 > | > disk (provider) > > You can use bio1->bio_pflags and bio2->bio_cflags. > > If you have the same queue for incoming and completed bios you might be > able to find out which is which by checking bio_to/bio_from fields for > example. > Mhm, I have a patch for that, just wanted to make sure it's an okay way to do it, thanks :) -- Ulf Lilleengen