On 06/24/13 12:17, Jack Wang wrote:
@@ -646,14 +703,20 @@ static int scsi_try_target_reset(struct scsi_cmnd *scmd)
  static int scsi_try_bus_device_reset(struct scsi_cmnd *scmd)
  {
         int rtn;
-       struct scsi_host_template *hostt = scmd->device->host->hostt;
+       struct Scsi_Host *host = scmd->device->host;
+       struct scsi_host_template *hostt = host->hostt;

         if (!hostt->eh_device_reset_handler)
                 return FAILED;

+       if (scsi_begin_eh(host))
+               return FAST_IO_FAIL;
+
         rtn = hostt->eh_device_reset_handler(scmd);
         if (rtn == SUCCESS)
                 __scsi_report_device_reset(scmd->device, NULL);
+       scsi_end_eh(host);
+
         return rtn;
  }

As the new eh from Hannes haven't make it into mainline, maybe we still
need also check scsi_try_to_abort_cmd?

I don't think such checks are necessary in scsi_try_to_abort_cmd(). scsi_remove_host() already waits until outstanding SCSI commands have finished. scsi_try_to_abort_cmd() only gets invoked if there are still one or more unfinished commands so scsi_try_to_abort_cmd() won't be invoked anymore after scsi_remove_host() has finished.

Bart.

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to