diff options
author | pjd <pjd@FreeBSD.org> | 2004-11-09 00:35:08 +0000 |
---|---|---|
committer | pjd <pjd@FreeBSD.org> | 2004-11-09 00:35:08 +0000 |
commit | 592adb99c22fd80961d30f2b42bfacfb29a4ec2f (patch) | |
tree | 62943814822fee4300488138f1087f3894ba4448 /sys | |
parent | 19ec3de6fc5624a4bddaad321bebde481fec2277 (diff) | |
download | FreeBSD-src-592adb99c22fd80961d30f2b42bfacfb29a4ec2f.zip FreeBSD-src-592adb99c22fd80961d30f2b42bfacfb29a4ec2f.tar.gz |
Drop Giant lock before grabbing the topology lock.
Diffstat (limited to 'sys')
-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 |