On Mon, 07/28 17:08, Paolo Bonzini wrote:
> Right now scsi-generic is parsing the CDB, in order to compute
> the expected number of bytes to be transferred.  This is necessary
> if DMA is done by the HBA via scsi_req_data, but it prevents executing
> vendor-specific commands via scsi-generic because we don't know how
> to parse them.
> 
> If DMA is delegated to the SCSI layer via get_sg_list, we know in
> advance how many bytes the guest will want to receive and we can pass
> the information straight from the guest to SG_IO.  In this case, it is
> unnecessary to parse the CDB to get the same information.  scsi-disk needs
> it to detect underruns and overruns, but scsi-generic and scsi-block can
> just ask the HBA about the transfer direction and size.
> 
> This series introduces a new parse_cdb callback in both the device and
> the HBA.  The latter is called by scsi_bus_parse_cdb, which devices can
> call for passthrough requests in their implementation of parse_cdb.
> 
> Paolo
> 
> v1->v2: use the "right" CDB size for non-vendor-specific commands,
>         as some drivers and/or firmware expect that and complain
>         if you pass a READ(10) command in a 16-byte CDB.  Interdiff
>         here.

More learning than reviewing for me, so take this with a grain of salt:

Reviewed-by: Fam Zheng <f...@redhat.com>

Reply via email to