diff options
author | Jeff Skirvin <jeffrey.d.skirvin@intel.com> | 2011-03-08 22:32:16 -0500 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2011-07-03 06:55:30 -0400 |
commit | 6e2802a7fc246b53f919efbf1c011da2d0a4ff30 (patch) | |
tree | e6d21e48ae88569583b0dd67bc7c7e9459a1c4ae /drivers | |
parent | aa14510295d3d87431c915c0b2bc5dd3af7f2c35 (diff) |
isci: All pending requests are terminated before stopping the device.
Make sure all pending I/O including any in the libsas error handler
process is cleaned-up.
Signed-off-by: Jeff Skirvin <jeffrey.d.skirvin@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/scsi/isci/remote_device.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/scsi/isci/remote_device.c b/drivers/scsi/isci/remote_device.c index 1dae2184b9e9..6fe6815e4b74 100644 --- a/drivers/scsi/isci/remote_device.c +++ b/drivers/scsi/isci/remote_device.c | |||
@@ -380,6 +380,10 @@ enum sci_status isci_remote_device_stop(struct isci_host *ihost, struct isci_rem | |||
380 | "%s: isci_device = %p\n", __func__, idev); | 380 | "%s: isci_device = %p\n", __func__, idev); |
381 | 381 | ||
382 | isci_remote_device_change_state(idev, isci_stopping); | 382 | isci_remote_device_change_state(idev, isci_stopping); |
383 | |||
384 | /* Kill all outstanding requests. */ | ||
385 | isci_remote_device_nuke_requests(idev); | ||
386 | |||
383 | set_bit(IDEV_STOP_PENDING, &idev->flags); | 387 | set_bit(IDEV_STOP_PENDING, &idev->flags); |
384 | 388 | ||
385 | spin_lock_irqsave(&ihost->scic_lock, flags); | 389 | spin_lock_irqsave(&ihost->scic_lock, flags); |