diff --git a/sys/geom/vinum/geom_vinum_drive.c b/sys/geom/vinum/geom_vinum_drive.c index 741dfadbcd38..24ac08ddf173 100644 --- a/sys/geom/vinum/geom_vinum_drive.c +++ b/sys/geom/vinum/geom_vinum_drive.c @@ -318,7 +318,8 @@ gv_drive_orphan(struct g_consumer *cp) s->provider = NULL; s->consumer = NULL; } - gv_set_drive_state(d, GV_DRIVE_DOWN, GV_SETSTATE_FORCE); + gv_set_drive_state(d, GV_DRIVE_DOWN, + GV_SETSTATE_FORCE | GV_SETSTATE_CONFIG); } gp->softc = NULL; g_wither_geom(gp, error); diff --git a/sys/geom/vinum/geom_vinum_state.c b/sys/geom/vinum/geom_vinum_state.c index 0510bc91b71c..2f9ad596c284 100644 --- a/sys/geom/vinum/geom_vinum_state.c +++ b/sys/geom/vinum/geom_vinum_state.c @@ -63,6 +63,10 @@ gv_set_drive_state(struct gv_drive *d, int newstate, int flags) gv_update_sd_state(s); } + /* Save the config back to disk. */ + if (flags & GV_SETSTATE_CONFIG) + gv_save_config_all(d->vinumconf); + return (1); }