Commands submitted to a SCSI StorPort driver in Windows Server 2003 will not
overlap. Standard R/W SRB's are being submitted to the StorPort driver
via another driver. A compressed summary of the other driver flow is:
Get the host adapter device object via IoGetDeviceObjectPointer().
Get driver object from host adapter object
Get physical device object from driver object. (This ends up being a
handle to \device\physicalDriveX)
....
....
Allocate IRP via IoBuildAsynchronousFsdRequest()
set completion routine via IoSetCompletionRoutine()
fill SRB and submit ansync R/W request via IoCallDriver() to physical
device object. Major function IRP_MJ_SCSI.
This method overlaps commands properly when submitted to a SCSIPort driver.
However a StorPort driver does not return from the IoCallDriver()
request until the command has completed. The identical code works properly
with SCSIPort drivers.
Any thoughts as to why the StorPort driver won't overlap commands when
submitted via another driver? The StorPort driver will overlap commands
when called via IOmeter, so I believe the StorPort driver itself is working
properly.