Shuffle around the order in which the components are compiled.

This way, the VINUMDRIVE class is loaded before the VINUM class,
but since geom does the tasting for newly arrived classes
last-in-first-out, the VINUM class tastes first.

This removes the need to call gv_parse_config() in the drive
taste path.
This commit is contained in:
Lukas Ertl 2005-08-26 14:40:32 +00:00
parent dbc2a95f40
commit df5175af0f
2 changed files with 5 additions and 15 deletions

View File

@ -419,7 +419,7 @@ gv_drive_taste(struct g_class *mp, struct g_provider *pp, int flags __unused)
struct gv_freelist *fl;
struct gv_hdr *vhdr;
int error;
char *buf, errstr[ERRBUFSIZ];
char errstr[ERRBUFSIZ];
vhdr = NULL;
d = NULL;
@ -461,22 +461,12 @@ gv_drive_taste(struct g_class *mp, struct g_provider *pp, int flags __unused)
break;
}
g_topology_lock();
/*
* We have found a valid vinum drive. Let's see if it is
* already known in the configuration. There's a chance that
* the VINUMDRIVE class tastes before the VINUM class could
* taste, so parse the configuration here too, just to be on
* the safe side.
* already known in the configuration.
*/
buf = g_read_data(cp, GV_CFG_OFFSET, GV_CFG_LEN, &error);
if (buf == NULL || error != 0) {
g_free(vhdr);
break;
}
g_topology_lock();
gv_parse_config(sc, buf, 1);
g_free(buf);
d = gv_find_drive(sc, vhdr->label.name);
/* We already know about this drive. */

View File

@ -3,7 +3,7 @@
.PATH: ${.CURDIR}/../../../geom/vinum
KMOD= geom_vinum
SRCS= geom_vinum.c geom_vinum_drive.c geom_vinum_plex.c \
SRCS= geom_vinum_drive.c geom_vinum.c geom_vinum_plex.c \
geom_vinum_volume.c geom_vinum_subr.c geom_vinum_raid5.c \
geom_vinum_share.c geom_vinum_list.c geom_vinum_rm.c \
geom_vinum_init.c geom_vinum_state.c