diff options
author | iedowse <iedowse@FreeBSD.org> | 2006-01-11 02:06:08 +0000 |
---|---|---|
committer | iedowse <iedowse@FreeBSD.org> | 2006-01-11 02:06:08 +0000 |
commit | 8872209c3029118c258adad352a06c5f00209150 (patch) | |
tree | bde584ef95b2c146a6a6f8b798c610ad29b05b20 /tools | |
parent | a1e420856f366519c33d3c47bffbb9ea0a979a3e (diff) | |
download | FreeBSD-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