summaryrefslogtreecommitdiffstats
path: root/sys/geom
diff options
context:
space:
mode:
authorpjd <pjd@FreeBSD.org>2004-11-09 00:35:08 +0000
committerpjd <pjd@FreeBSD.org>2004-11-09 00:35:08 +0000
commit592adb99c22fd80961d30f2b42bfacfb29a4ec2f (patch)
tree62943814822fee4300488138f1087f3894ba4448 /sys/geom
parent19ec3de6fc5624a4bddaad321bebde481fec2277 (diff)
downloadFreeBSD-src-592adb99c22fd80961d30f2b42bfacfb29a4ec2f.zip
FreeBSD-src-592adb99c22fd80961d30f2b42bfacfb29a4ec2f.tar.gz
Drop Giant lock before grabbing the topology lock.
Diffstat (limited to 'sys/geom')
-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