diff options
author | Dan Williams <dan.j.williams@intel.com> | 2011-12-08 03:37:25 -0500 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2012-02-29 16:16:05 -0500 |
commit | 6a719391e4a13d5fa2ec7642ef0c780d7f3f5716 (patch) | |
tree | 669d2569b29f930d2eeb895b2cc81e22e2878472 /drivers/scsi | |
parent | 687833a03baae8308900486fa6499ef955fd07a9 (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.c | 2 | ||||
-rw-r--r-- | drivers/scsi/isci/task.c | 23 | ||||
-rw-r--r-- | drivers/scsi/isci/task.h | 2 |
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 | |||
1326 | int 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 | ||
211 | int 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. |