summaryrefslogtreecommitdiffstats
path: root/sys/geom/vinum
diff options
context:
space:
mode:
authorle <le@FreeBSD.org>2004-09-13 17:33:52 +0000
committerle <le@FreeBSD.org>2004-09-13 17:33:52 +0000
commit876ffa30db5b0123994fca618dc4d9b53d0fcc7f (patch)
tree6d9142463948e3fe4ba4a0cdceb853c59918140e /sys/geom/vinum
parentb19a8d0082bffe3b441106a13c1aa0211d48e6ff (diff)
downloadFreeBSD-src-876ffa30db5b0123994fca618dc4d9b53d0fcc7f.zip
FreeBSD-src-876ffa30db5b0123994fca618dc4d9b53d0fcc7f.tar.gz
Save the config back to disk when a drive goes down.
Diffstat (limited to 'sys/geom/vinum')
-rw-r--r--sys/geom/vinum/geom_vinum_drive.c3
-rw-r--r--sys/geom/vinum/geom_vinum_state.c4
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);
}
OpenPOWER on IntegriCloud