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

next in thread | previous in thread | raw e-mail | index | archive | help
On tir, apr 21, 2009 at 11:30:11am +0200, Pawel Jakub Dawidek wrote:
> On Sun, Apr 19, 2009 at 10:10:06AM +0000, Ulf Lilleengen wrote:
> > The following reply was made to PR kern/133604; it has been noted by GNATS.
> > 
> > From: Ulf Lilleengen <lulf@FreeBSD.org>
> > To: bug-followup@FreeBSD.org
> > Cc:  
> > Subject: Re: kern/133604: [gvinum] [panic] writing to gjournal on a gvinum
> > 	volume
> > Date: Sun, 19 Apr 2009 13:02:54 +0200
> > 
> >  On Tue, Apr 14, 2009 at 09:00:07AM +0000, Ulf Lilleengen wrote:
> >  > The following reply was made to PR kern/133604; it has been noted by GNATS.
> >  > 
> >  > From: Ulf Lilleengen <ulf.lilleengen@gmail.com>
> >  > To: bug-followup@FreeBSD.org, pmc@citylink.dinoex.sub.org
> >  > Cc:  
> >  > Subject: Re: kern/133604: [gvinum] [panic] writing to gjournal on a gvinum 
> >  > 	volume
> >  > Date: Tue, 14 Apr 2009 10:21:54 +0200
> >  > 
> >  >  --000e0cd25b640a4f6004677f8657
> >  >  Content-Type: text/plain; charset=UTF-8
> >  >  Content-Transfer-Encoding: 7bit
> >  >  
> >  >  On Sun, Apr 12, 2009 at 12:10 AM, <linimon@freebsd.org> wrote:
> >  >  
> >  >  > Old Synopsis: [panic] writing to gjournal on a gvinum volume
> >  >  > New Synopsis: [gvinum] [panic] writing to gjournal on a gvinum volume
> >  >  >
> >  >  > Responsible-Changed-From-To: freebsd-bugs->freebsd-geom
> >  >  > Responsible-Changed-By: linimon
> >  >  > Responsible-Changed-When: Sat Apr 11 22:10:10 UTC 2009
> >  >  > Responsible-Changed-Why:
> >  >  > Over to maintainer(s).
> >  >  >
> >  >  > http://www.freebsd.org/cgi/query-pr.cgi?pr=133604
> >  >  > _______________________________________________
> >  >  > freebsd-geom@freebsd.org mailing list
> >  >  > http://lists.freebsd.org/mailman/listinfo/freebsd-geom
> >  >  > To unsubscribe, send any mail to "freebsd-geom-unsubscribe@freebsd.org"
> >  >  
> >  >  
> >  >  Are you able to try gvinum from HEAD to see if it works there? I'll take a
> >  >  look into gvinum on 7.2-PRE as well, but just in case you would like to try
> >  >  it.
> >  >  
> >  
> >  Ok, I tracked down the issue. The problem is in both HEAD and 7.x, so I will
> >  fix it in HEAD first. The problem is the bio_cflags part of the bio that
> >  gjournal sends down to gvinum. When gjournal does a read, it sets GJ_BIO_READ
> >  in bio_cflags. When the request arrives to gvinum it check cflags for
> >  GV_BIO_DONE to check if the request is a done request, in which case it will
> >  be treated like a bio of gvinum. The crash comes from GJ_BIO_READ having the
> >  same value as GV_BIO_DONE. I'll generate a fix that makes gvinum not depend
> >  on the bio_cflags value of external BIOs.
> 
> 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?

-- 
Ulf Lilleengen



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