isci: All pending requests are terminated before stopping the device.
authorJeff Skirvin <jeffrey.d.skirvin@intel.com>
Wed, 9 Mar 2011 03:32:16 +0000 (20:32 -0700)
committerDan Williams <dan.j.williams@intel.com>
Sun, 3 Jul 2011 10:55:30 +0000 (03:55 -0700)
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>
drivers/scsi/isci/remote_device.c

index 1dae2184b9e995aa6d295bfb576b75793bda2d1d..6fe6815e4b7456d856de8790bf53434396a86dac 100644 (file)
@@ -380,6 +380,10 @@ enum sci_status isci_remote_device_stop(struct isci_host *ihost, struct isci_rem
                "%s: isci_device = %p\n", __func__, idev);
 
        isci_remote_device_change_state(idev, isci_stopping);
+
+       /* Kill all outstanding requests. */
+       isci_remote_device_nuke_requests(idev);
+
        set_bit(IDEV_STOP_PENDING, &idev->flags);
 
        spin_lock_irqsave(&ihost->scic_lock, flags);