diff options
author | le <le@FreeBSD.org> | 2004-09-13 17:33:52 +0000 |
---|---|---|
committer | le <le@FreeBSD.org> | 2004-09-13 17:33:52 +0000 |
commit | 876ffa30db5b0123994fca618dc4d9b53d0fcc7f (patch) | |
tree | 6d9142463948e3fe4ba4a0cdceb853c59918140e /sys | |
parent | b19a8d0082bffe3b441106a13c1aa0211d48e6ff (diff) | |
download | FreeBSD-src-876ffa30db5b0123994fca618dc4d9b53d0fcc7f.zip FreeBSD-src-876ffa30db5b0123994fca618dc4d9b53d0fcc7f.tar.gz |
Save the config back to disk when a drive goes down.
Diffstat (limited to 'sys')
-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); } |