Re: [PATCH 6/7] drivers: scsi: storvsc: Set srb_flags in all cases

Hannes Reinecke
2014-07-14T06:17:12Z

On 07/12/2014 06:48 PM, K. Y. Srinivasan wrote:
> Correctly set SRB flags for all valid I/O directions. Some IHV drivers on the
> Windows host require this. The host validates the command and SRB flags
> prior to passing the command down to native driver stack.
>
> Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
> Cc: <stable@vger.kernel.org>
> ---
> drivers/scsi/storvsc_drv.c | 12 +++++-------
> 1 files changed, 5 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c
> index 3516761..9342ba4 100644
> --- a/drivers/scsi/storvsc_drv.c
> +++ b/drivers/scsi/storvsc_drv.c
> @@ -1599,26 +1599,24 @@ static int storvsc_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *scmnd)
> vm_srb = &cmd_request->vstor_packet.vm_srb;
> vm_srb->win8_extension.time_out_value = 60;
>
> + vm_srb->win8_extension.srb_flags |=
> + (SRB_FLAGS_QUEUE_ACTION_ENABLE |
> + SRB_FLAGS_DISABLE_SYNCH_TRANSFER);
>
> /* Build the SRB */
> switch (scmnd->sc_data_direction) {
> case DMA_TO_DEVICE:
> vm_srb->data_in = WRITE_TYPE;
> vm_srb->win8_extension.srb_flags |= SRB_FLAGS_DATA_OUT;
> - vm_srb->win8_extension.srb_flags |=
> - (SRB_FLAGS_QUEUE_ACTION_ENABLE |
> - SRB_FLAGS_DISABLE_SYNCH_TRANSFER);
> break;
> case DMA_FROM_DEVICE:
> vm_srb->data_in = READ_TYPE;
> vm_srb->win8_extension.srb_flags |= SRB_FLAGS_DATA_IN;
> - vm_srb->win8_extension.srb_flags |=
> - (SRB_FLAGS_QUEUE_ACTION_ENABLE |
> - SRB_FLAGS_DISABLE_SYNCH_TRANSFER);
> break;
> default:
> vm_srb->data_in = UNKNOWN_TYPE;
> - vm_srb->win8_extension.srb_flags = 0;
> + vm_srb->win8_extension.srb_flags |= (SRB_FLAGS_DATA_IN |
> + SRB_FLAGS_DATA_OUT);
> break;
> }
>
>
Reviewed-by: Hannes Reinecke <hare@suse.de>

Cheers,

Hannes
--
Dr. Hannes Reinecke zSeries & Storage
hare@suse.de +49 911 74053 688
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nï¿½rnberg
GF: J. Hawn, J. Guild, F. Imendï¿½rffer, HRB 16746 (AG Nï¿½rnberg)