summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authoriedowse <iedowse@FreeBSD.org>2006-01-11 02:06:08 +0000
committeriedowse <iedowse@FreeBSD.org>2006-01-11 02:06:08 +0000
commit8872209c3029118c258adad352a06c5f00209150 (patch)
treebde584ef95b2c146a6a6f8b798c610ad29b05b20 /tools
parenta1e420856f366519c33d3c47bffbb9ea0a979a3e (diff)
downloadFreeBSD-src-8872209c3029118c258adad352a06c5f00209150.zip
FreeBSD-src-8872209c3029118c258adad352a06c5f00209150.tar.gz
When deregistering a bus, attempt to flush out all outstanding
operations before returning. Point the bus at a dummy cam_sim structure so that any CCBs will complete immediately with a CAM_DEV_NOT_THERE status, and ensure that any xpt_schedule() calls on the bus's devices will immediately call the peripheral's periph_start() routine. Also repeat the async messages because devices that were part of the way through being probed may appear after the original AC_LOST_DEVICE was sent, and would otherwise never go away. These changes make it possible to deregister a bus and free the SIM at most stages during bus probing without the usual crashes in camisr(). In particular, plugging in a umass device and then unplugging it as soon as the first probe messages appeared would almost always result in a crash. Now the device just goes away with a few CAM errors and all references to the CAM bus, target and device are dropped correctly.
Diffstat (limited to 'tools')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud