Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 9 Mar 2007 02:16:35 +0100
From:      Ulf Lilleengen <lulf@pvv.ntnu.no>
To:        freebsd-geom@freebsd.org
Cc:        le@FreeBSD.org
Subject:   Re: Problems simulating gvinum raid5 rebuild
Message-ID:  <20070309011635.GA4329@twoflower.idi.ntnu.no>
In-Reply-To: <20070308015812.GA30713@twoflower.idi.ntnu.no>
References:  <0B1A704D-A455-4741-BC11-A2019BFB4B22@bitheaven.net> <45EF18C3.3070106@freebsd.org> <20070308015812.GA30713@twoflower.idi.ntnu.no>

next in thread | previous in thread | raw e-mail | index | archive | help
On tor, mar 08, 2007 at 02:58:12am +0100, Ulf Lilleengen wrote:
> On ons, mar 07, 2007 at 08:55:47pm +0100, Lukas Ertl wrote:
> > Clayton F wrote:
> > 
> > >Any suggestions? Is using 7 drives exceeding the number that gvinum 
> > >raid5 will allow? Should I be labeling the drives differently? Is my 
> > >method for simulating a drive failure/replacement flawed? Any help would 
> > >be most appreciated!
> > 
> > It's apparently a bug.  I'm currently working on some improvements to 
> > geom_vinum, and this will be addressed, too.
> 
> This mess is because when reading the gvinum configuration on boot-time, none of
> the objects is actually bound together and registered within another when the
> drive_taste is run (The parser just creates the object. It does not bind
> anything together). The states is also not updated. I've already done some work
> on this, but I discovered more issues that need to be fixed.  I'll try have a
> patch ready by tomorrow night.

Ok, apparently it does bind objects together, but a subdisk that is not
registered with a drive (if the drive is not there) doesn't get tasted. 
I'm having problems to find a nice way of adding the subdisk without a drive to
a plex, so that the plex can get into it's correct state.

One way i tried it in gv_plex_taste was to loop through all subdisks, and find
subdisks that didn't have any drive, _and_ was to be registered with this plex.
Then i registered it with the plex. Something like this:

LIST_FOREACH(s, &sc->subdisks, sd) {
	if s->plex equals plexname
		if s has no drive
			add the subdisk to this plex
}

However, I don't think i have a good enough overview of the locking yet to see
why this crashes.

-- 
Ulf Lilleengen



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