* Brian King (brking@xxxxxxxxxxxxxxxxxx) wrote: > > This fixes an issue seen with devices getting marked offline > in a scenario where a VIOS was getting rebooted while a > client VFC adapter is in SCSI EH and prevents unnecessary > EH escalation in some scenarios. > > Signed-off-by: Brian King <brking@xxxxxxxxxxxxxxxxxx> Acked-by: Robert Jennings <rcj@xxxxxxxxxxxxxxxxxx> > --- > > drivers/scsi/ibmvscsi/ibmvfc.c | 15 +++++++++++++-- > 1 file changed, 13 insertions(+), 2 deletions(-) > > diff -puN drivers/scsi/ibmvscsi/ibmvfc.c~ibmvfc_abort_during_reset drivers/scsi/ibmvscsi/ibmvfc.c > --- linux/drivers/scsi/ibmvscsi/ibmvfc.c~ibmvfc_abort_during_reset 2013-08-06 15:10:04.000000000 -0500 > +++ linux-bjking1/drivers/scsi/ibmvscsi/ibmvfc.c 2013-08-06 15:10:04.000000000 -0500 > @@ -2208,7 +2208,10 @@ static int ibmvfc_cancel_all(struct scsi > > if (rsp_rc != 0) { > sdev_printk(KERN_ERR, sdev, "Failed to send cancel event. rc=%d\n", rsp_rc); > - return -EIO; > + /* If failure is received, the host adapter is most likely going > + through reset, return success so the caller will wait for the command > + being cancelled to get returned */ > + return 0; > } > > sdev_printk(KERN_INFO, sdev, "Cancelling outstanding commands.\n"); > @@ -2221,7 +2224,15 @@ static int ibmvfc_cancel_all(struct scsi > > if (status != IBMVFC_MAD_SUCCESS) { > sdev_printk(KERN_WARNING, sdev, "Cancel failed with rc=%x\n", status); > - return -EIO; > + switch (status) { > + case IBMVFC_MAD_DRIVER_FAILED: > + case IBMVFC_MAD_CRQ_ERROR: > + /* Host adapter most likely going through reset, return success to > + the caller will wait for the command being cancelled to get returned */ > + return 0; > + default: > + return -EIO; > + }; > } > > sdev_printk(KERN_INFO, sdev, "Successfully cancelled outstanding commands\n"); > _ -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html