From 592adb99c22fd80961d30f2b42bfacfb29a4ec2f Mon Sep 17 00:00:00 2001 From: pjd Date: Tue, 9 Nov 2004 00:35:08 +0000 Subject: [PATCH] Drop Giant lock before grabbing the topology lock. --- sys/geom/mirror/g_mirror.c | 2 ++ sys/geom/raid3/g_raid3.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/sys/geom/mirror/g_mirror.c b/sys/geom/mirror/g_mirror.c index 5cf1d586861b..750aa0567107 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 a041a0eb11e3..f4d6d895d085 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