mirror of https://gitee.com/openkylin/linux.git
[SCSI] isci: remove bus and reset handlers
Remove ->eh_device_reset_handler() and ->eh_bus_reset_handler() for the same reason they are not implemented for libata hosts, they cannot be implemented reliably with ata-eh. ATA error recovery wants to divert all resets to the eh thread and wait for completion, these handlers may be invoked from a non-blocking ioctl. The other path they are called from is libsas-eh, and if we escalate past I_T_nexus reset we have larger problems i.e. tear down all in-flight commands in the domain potentially without notification to the lldd if it has chosen not to implement ->lldd_clear_nexus_port() / ->lldd_clear_nexus_ha(). Signed-off-by: Dan Williams <dan.j.williams@intel.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
This commit is contained in:
parent
687833a03b
commit
6a719391e4
|
@ -165,8 +165,6 @@ static struct scsi_host_template isci_sht = {
|
||||||
.sg_tablesize = SG_ALL,
|
.sg_tablesize = SG_ALL,
|
||||||
.max_sectors = SCSI_DEFAULT_MAX_SECTORS,
|
.max_sectors = SCSI_DEFAULT_MAX_SECTORS,
|
||||||
.use_clustering = ENABLE_CLUSTERING,
|
.use_clustering = ENABLE_CLUSTERING,
|
||||||
.eh_device_reset_handler = sas_eh_device_reset_handler,
|
|
||||||
.eh_bus_reset_handler = isci_bus_reset_handler,
|
|
||||||
.slave_alloc = sas_slave_alloc,
|
.slave_alloc = sas_slave_alloc,
|
||||||
.target_destroy = sas_target_destroy,
|
.target_destroy = sas_target_destroy,
|
||||||
.ioctl = sas_ioctl,
|
.ioctl = sas_ioctl,
|
||||||
|
|
|
@ -1322,26 +1322,3 @@ int isci_task_I_T_nexus_reset(struct domain_device *dev)
|
||||||
isci_put_device(idev);
|
isci_put_device(idev);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int isci_bus_reset_handler(struct scsi_cmnd *cmd)
|
|
||||||
{
|
|
||||||
struct domain_device *dev = sdev_to_domain_dev(cmd->device);
|
|
||||||
struct isci_host *ihost = dev_to_ihost(dev);
|
|
||||||
struct isci_remote_device *idev;
|
|
||||||
unsigned long flags;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
spin_lock_irqsave(&ihost->scic_lock, flags);
|
|
||||||
idev = isci_lookup_device(dev);
|
|
||||||
spin_unlock_irqrestore(&ihost->scic_lock, flags);
|
|
||||||
|
|
||||||
if (!idev) {
|
|
||||||
ret = TMF_RESP_FUNC_COMPLETE;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = isci_reset_device(ihost, dev, idev);
|
|
||||||
out:
|
|
||||||
isci_put_device(idev);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
|
@ -208,8 +208,6 @@ int isci_queuecommand(
|
||||||
struct scsi_cmnd *scsi_cmd,
|
struct scsi_cmnd *scsi_cmd,
|
||||||
void (*donefunc)(struct scsi_cmnd *));
|
void (*donefunc)(struct scsi_cmnd *));
|
||||||
|
|
||||||
int isci_bus_reset_handler(struct scsi_cmnd *cmd);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* enum isci_completion_selection - This enum defines the possible actions to
|
* enum isci_completion_selection - This enum defines the possible actions to
|
||||||
* take with respect to a given request's notification back to libsas.
|
* take with respect to a given request's notification back to libsas.
|
||||||
|
|
Loading…
Reference in New Issue