Read features exported by upstream blkback

Signed-off-by: Owen Smith <owen.smith@citrix.com>
Add unprepare of all BLKIF_OP_ requests and prepare of most requests
BLKIF_OP_INDIRECT operation prepare has not been implemented

Signed-off-by: Owen Smith <owen.smith@citrix.com>
Prepare BLKIF_OP_INDIRECT requests.
When supported, BLKIF_OP_READ | BLKIF_OP_WRITE contain more than
2 requests worth of sectors and buffers are sector aligned (disallow
bounceing of indirect operations), prepare an INDIRECT operation
instead of the READ or WRITE

Signed-off-by: Owen Smith <owen.smith@citrix.com>
Add SCSIOP_UNMAP handler for BLKIF_OP_DISCARDs
Note: Storport does not convert discard requests to SCSIOP_UNMAPs,
	  a device filter/pass through will be required to get these
	  requests

Signed-off-by: Owen Smith <owen.smith@citrix.com>
Display status of Feature.Persistent when reading features

Signed-off-by: Owen Smith <owen.smith@citrix.com>
Move read feature-* to after backend has Connected.
blkback writes feature-* values before going Connected.

Transport level features (persistent, indirect, ring-parameters)
should be written before blkback goes InitWait.
Device level features (barrier, flush, discard) can not be determined
until blkback has opened its storage device (state Connected).

Signed-off-by: Owen Smith <owen.smith@citrix.com>
Fix debug output 0x0A BSOD

Signed-off-by: Owen Smith <owen.smith@citrix.com>
Add tracking of some stats about requests
Tracks number of each BLKIF_OP_* (successfully prepared) and
number of SRBs (SCSIOP_READ | SCSIOP_WRITE) that use bounce buffers
or direct granting of memory.

Signed-off-by: Owen Smith <owen.smith@citrix.com>