Restore queue depth settings across tag disable events. The system often
commitad24965aeec625f212aefe81e80963efebf1ef3d
authorPeter Avalos <pavalos@dragonflybsd.org>
Thu, 29 Nov 2007 01:32:16 +0000 (29 01:32 +0000)
committerPeter Avalos <pavalos@dragonflybsd.org>
Thu, 29 Nov 2007 01:32:16 +0000 (29 01:32 +0000)
tree233f74ece151faf986aa83a206a2ca41aa55422a
parentfb11ce58281af75a527ce322058c34b1d3058479
Restore queue depth settings across tag disable events.  The system often
disables tag queuing temporarily in order to allow controllers a window
to safely perform transfer negotiation with non-compliant devices.  Before
this change, CAM would restore the queue depth to the controller specified
maximum or device quirk level rather than any depth determined by reactions
to QUEUE FULL/BUSY events or an explicit user setting.

During device probe, initialize the flags field for XPT_SCAN_BUS.
The uninitialized value often confused CAM into not bothering to
issue an AC_FOUND_DEVICE async event for new devices.  The reason
this bug wasn't reported earlier is that CAM manually announces
devices after the initial system bus scans.

Obtained-from: FreeBSD
sys/bus/cam/cam_xpt.c