summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/geom/mirror/g_mirror.c2
-rw-r--r--sys/geom/raid3/g_raid3.c2
2 files changed, 4 insertions, 0 deletions
diff --git a/sys/geom/mirror/g_mirror.c b/sys/geom/mirror/g_mirror.c
index 5cf1d58..750aa05 100644
--- a/sys/geom/mirror/g_mirror.c
+++ b/sys/geom/mirror/g_mirror.c
@@ -2805,6 +2805,7 @@ g_mirror_shutdown(void *arg, int howto)
struct g_geom *gp, *gp2;
mp = arg;
+ DROP_GIANT();
g_topology_lock();
LIST_FOREACH_SAFE(gp, &mp->geom, geom, gp2) {
if (gp->softc == NULL)
@@ -2812,6 +2813,7 @@ g_mirror_shutdown(void *arg, int howto)
g_mirror_destroy(gp->softc, 1);
}
g_topology_unlock();
+ PICKUP_GIANT();
#if 0
tsleep(&gp, PRIBIO, "m:shutdown", hz * 20);
#endif
diff --git a/sys/geom/raid3/g_raid3.c b/sys/geom/raid3/g_raid3.c
index a041a0e..f4d6d89 100644
--- a/sys/geom/raid3/g_raid3.c
+++ b/sys/geom/raid3/g_raid3.c
@@ -3030,6 +3030,7 @@ g_raid3_shutdown(void *arg, int howto)
struct g_geom *gp, *gp2;
mp = arg;
+ DROP_GIANT();
g_topology_lock();
LIST_FOREACH_SAFE(gp, &mp->geom, geom, gp2) {
if (gp->softc == NULL)
@@ -3037,6 +3038,7 @@ g_raid3_shutdown(void *arg, int howto)
g_raid3_destroy(gp->softc, 1);
}
g_topology_unlock();
+ PICKUP_GIANT();
#if 0
tsleep(&gp, PRIBIO, "r3:shutdown", hz * 20);
#endif
OpenPOWER on IntegriCloud