diff options
-rw-r--r-- | sys/geom/mirror/g_mirror.c | 2 | ||||
-rw-r--r-- | sys/geom/raid3/g_raid3.c | 2 |
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 |