aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2011-12-08 03:37:25 -0500
committerJames Bottomley <JBottomley@Parallels.com>2012-02-29 16:16:05 -0500
commit6a719391e4a13d5fa2ec7642ef0c780d7f3f5716 (patch)
tree669d2569b29f930d2eeb895b2cc81e22e2878472 /drivers/scsi
parent687833a03baae8308900486fa6499ef955fd07a9 (diff)
[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>
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/isci/init.c2
-rw-r--r--drivers/scsi/isci/task.c23
-rw-r--r--drivers/scsi/isci/task.h2
3 files changed, 0 insertions, 27 deletions
diff --git a/drivers/scsi/isci/init.c b/drivers/scsi/isci/init.c
index 68d9bc23d190..c3fe39bcacd5 100644
--- a/drivers/scsi/isci/init.c
+++ b/drivers/scsi/isci/init.c
@@ -165,8 +165,6 @@ static struct scsi_host_template isci_sht = {
165 .sg_tablesize = SG_ALL, 165 .sg_tablesize = SG_ALL,
166 .max_sectors = SCSI_DEFAULT_MAX_SECTORS, 166 .max_sectors = SCSI_DEFAULT_MAX_SECTORS,
167 .use_clustering = ENABLE_CLUSTERING, 167 .use_clustering = ENABLE_CLUSTERING,
168 .eh_device_reset_handler = sas_eh_device_reset_handler,
169 .eh_bus_reset_handler = isci_bus_reset_handler,
170 .slave_alloc = sas_slave_alloc, 168 .slave_alloc = sas_slave_alloc,
171 .target_destroy = sas_target_destroy, 169 .target_destroy = sas_target_destroy,
172 .ioctl = sas_ioctl, 170 .ioctl = sas_ioctl,
diff --git a/drivers/scsi/isci/task.c b/drivers/scsi/isci/task.c
index 3f04e97128a6..530697957481 100644
--- a/drivers/scsi/isci/task.c
+++ b/drivers/scsi/isci/task.c
@@ -1322,26 +1322,3 @@ int isci_task_I_T_nexus_reset(struct domain_device *dev)
1322 isci_put_device(idev); 1322 isci_put_device(idev);
1323 return ret; 1323 return ret;
1324} 1324}
1325
1326int isci_bus_reset_handler(struct scsi_cmnd *cmd)
1327{
1328 struct domain_device *dev = sdev_to_domain_dev(cmd->device);
1329 struct isci_host *ihost = dev_to_ihost(dev);
1330 struct isci_remote_device *idev;
1331 unsigned long flags;
1332 int ret;
1333
1334 spin_lock_irqsave(&ihost->scic_lock, flags);
1335 idev = isci_lookup_device(dev);
1336 spin_unlock_irqrestore(&ihost->scic_lock, flags);
1337
1338 if (!idev) {
1339 ret = TMF_RESP_FUNC_COMPLETE;
1340 goto out;
1341 }
1342
1343 ret = isci_reset_device(ihost, dev, idev);
1344 out:
1345 isci_put_device(idev);
1346 return ret;
1347}
diff --git a/drivers/scsi/isci/task.h b/drivers/scsi/isci/task.h
index 5ba00c3081f4..7b6d0e32fd9b 100644
--- a/drivers/scsi/isci/task.h
+++ b/drivers/scsi/isci/task.h
@@ -208,8 +208,6 @@ int isci_queuecommand(
208 struct scsi_cmnd *scsi_cmd, 208 struct scsi_cmnd *scsi_cmd,
209 void (*donefunc)(struct scsi_cmnd *)); 209 void (*donefunc)(struct scsi_cmnd *));
210 210
211int isci_bus_reset_handler(struct scsi_cmnd *cmd);
212
213/** 211/**
214 * enum isci_completion_selection - This enum defines the possible actions to 212 * enum isci_completion_selection - This enum defines the possible actions to
215 * take with respect to a given request's notification back to libsas. 213 * take with respect to a given request's notification back to libsas.