Problems simulating gvinum raid5 rebuild

Ulf Lilleengen lulf at pvv.ntnu.no
Fri Mar 9 01:41:40 UTC 2007


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


More information about the freebsd-geom mailing list