Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 21 Apr 2009 12:28:02 +0200
From:      Pawel Jakub Dawidek <pjd@FreeBSD.org>
To:        Ulf Lilleengen <lulf@FreeBSD.org>
Cc:        freebsd-geom@FreeBSD.org
Subject:   Re: kern/133604: [gvinum] [panic] writing to gjournal on a gvinum volume
Message-ID:  <20090421102802.GC7771@mail.wheel.pl>
In-Reply-To: <20090421111559.GA21043@carrot>
References:  <200904191010.n3JAA6lk068313@freefall.freebsd.org> <20090421093011.GB7771@mail.wheel.pl> <20090421111559.GA21043@carrot>

next in thread | previous in thread | raw e-mail | index | archive | help
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
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.

-- 
Pawel Jakub Dawidek                       http://www.wheel.pl
pjd@FreeBSD.org                           http://www.FreeBSD.org
FreeBSD committer                         Am I Evil? Yes, I Am!



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20090421102802.GC7771>