diff options
-rw-r--r-- | sys/geom/vinum/geom_vinum_drive.c | 3 | ||||
-rw-r--r-- | sys/geom/vinum/geom_vinum_state.c | 4 |
2 files changed, 6 insertions, 1 deletions
diff --git a/sys/geom/vinum/geom_vinum_drive.c b/sys/geom/vinum/geom_vinum_drive.c index 741dfad..24ac08d 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 0510bc9..2f9ad59 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); } |