Date: Wed, 11 Jan 2006 02:06:09 +0000 (UTC) From: Ian Dowse <iedowse@FreeBSD.org> To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/cam cam_xpt.c Message-ID: <200601110206.k0B2699N020079@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
iedowse 2006-01-11 02:06:09 UTC
FreeBSD src repository
Modified files:
sys/cam cam_xpt.c
Log:
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.
Revision Changes Path
1.157 +111 -8 src/sys/cam/cam_xpt.c
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200601110206.k0B2699N020079>
