summaryrefslogtreecommitdiffstats
path: root/sys/geom
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2011-11-01 08:57:49 +0000
committermav <mav@FreeBSD.org>2011-11-01 08:57:49 +0000
commit80b1c68a336c2287452d9014dda432ac146311df (patch)
tree9f2a0593b556ae8bf9d2699568cbb2ced5e9d210 /sys/geom
parentd419b160ca944633d83ecf0bfe51170b2d23eccf (diff)
downloadFreeBSD-src-80b1c68a336c2287452d9014dda432ac146311df.zip
FreeBSD-src-80b1c68a336c2287452d9014dda432ac146311df.tar.gz
Workaround the problem introduced by combination of r162200 and r215687.
r162200 delays provider orphanization until all running requests complete, to workaround broken orphan() method implementation in some classes. r215687 removes persistent periodic (10Hz) event thread wake ups. Together these changes can indefinitely delay orphanization until some other event wake up the event thread. One consequence of this is inability of CAM to destroy device disconnected when busy and, as consequence, create new one after reconnection. While the best solution would be to revert r162200, it is not easy, as some classes still look broken in that way. Instead conditionally wake up event thread if there are some providers waiting for orphanization. MFC after: 1 week
Diffstat (limited to 'sys/geom')
-rw-r--r--sys/geom/geom_event.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/geom/geom_event.c b/sys/geom/geom_event.c
index 1e2fc8d..1c92ccb 100644
--- a/sys/geom/geom_event.c
+++ b/sys/geom/geom_event.c
@@ -294,7 +294,7 @@ g_run_events()
} else {
g_topology_unlock();
msleep(&g_wait_event, &g_eventlock, PRIBIO | PDROP,
- "-", 0);
+ "-", TAILQ_EMPTY(&g_doorstep) ? 0 : hz / 10);
}
}
/* NOTREACHED */
OpenPOWER on IntegriCloud