> -----Original Message----- > From: K. Y. Srinivasan [mailto:kys@xxxxxxxxxxxxx] > Sent: Thursday, April 05, 2012 3:27 PM > To: gregkh@xxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; > devel@xxxxxxxxxxxxxxxxxxxxxx; virtualization@xxxxxxxxxxxxxx; ohering@xxxxxxxx; > jbottomley@xxxxxxxxxxxxx; hch@xxxxxxxxxxxxx; linux-scsi@xxxxxxxxxxxxxxx; > apw@xxxxxxxxxxxxx > Cc: KY Srinivasan > Subject: [PATCH RESEND 1/1] Drivers: scsi: storvsc: Properly handle errors from > the host > > If the host returns error for pass through commands, deal with them > appropriately. I would like to thank James for patiently helping > me with this patch. James, Thank you for suggesting the fix here. I hope this is what you were looking for. Regards, K. Y > > Signed-off-by: K. Y. Srinivasan <kys@xxxxxxxxxxxxx> > Reviewed-by: Haiyang Zhang <haiyangz@xxxxxxxxxxxxx> > --- > drivers/scsi/storvsc_drv.c | 20 +++++++++++++++----- > 1 files changed, 15 insertions(+), 5 deletions(-) > > diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c > index 83a1972..528d52b 100644 > --- a/drivers/scsi/storvsc_drv.c > +++ b/drivers/scsi/storvsc_drv.c > @@ -785,12 +785,22 @@ static void storvsc_command_completion(struct > storvsc_cmd_request *cmd_request) > /* > * If there is an error; offline the device since all > * error recovery strategies would have already been > - * deployed on the host side. > + * deployed on the host side. However, if the command > + * were a pass-through command deal with it appropriately. > */ > - if (vm_srb->srb_status == SRB_STATUS_ERROR) > - scmnd->result = DID_TARGET_FAILURE << 16; > - else > - scmnd->result = vm_srb->scsi_status; > + scmnd->result = vm_srb->scsi_status; > + > + if (vm_srb->srb_status == SRB_STATUS_ERROR) { > + switch (scmnd->cmnd[0]) { > + case ATA_16: > + case ATA_12: > + set_host_byte(scmnd, DID_PASSTHROUGH); > + break; > + default: > + set_host_byte(scmnd, DID_TARGET_FAILURE); > + } > + } > + > > /* > * If the LUN is invalid; remove the device. > -- > 1.7.4.1 > > > _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/devel