diff options
author | mav <mav@FreeBSD.org> | 2013-03-24 10:14:25 +0000 |
---|---|---|
committer | mav <mav@FreeBSD.org> | 2013-03-24 10:14:25 +0000 |
commit | 6cd6934fad2bb1e5222172d623c764679f7b186c (patch) | |
tree | ad8fd6e02a6d3f87f11e58856a31bc5248bef759 /lib/libcam | |
parent | 8ce3236c14a8165ab3ad39cd54569a42282a7e3d (diff) | |
download | FreeBSD-src-6cd6934fad2bb1e5222172d623c764679f7b186c.zip FreeBSD-src-6cd6934fad2bb1e5222172d623c764679f7b186c.tar.gz |
Fix long known deadlock between geom dev destruction and d_close() call.
Use destroy_dev_sched_cb() to not wait for device destruction while holding
GEOM topology lock (that actually caused deadlock). Use request counting
protected by mutex to properly wait for outstanding requests completion in
cases of device closing and geom destruction. Unlike r227009, this code
does not block taskqueue thread for indefinite time, waiting for completion.
Diffstat (limited to 'lib/libcam')
0 files changed, 0 insertions, 0 deletions