aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/isci/remote_device.h
diff options
context:
space:
mode:
authorJeff Skirvin <jeffrey.d.skirvin@intel.com>2012-03-09 01:41:54 -0500
committerDan Williams <dan.j.williams@intel.com>2012-05-17 17:33:38 -0400
commit14aaa9f0a318bd04cbb9d822524b817e95d8b343 (patch)
tree5f6292ec671d0993c1df51586dea4fb7750d1cd9 /drivers/scsi/isci/remote_device.h
parentd80ecd5726ce49b5da457d562804b40f0183e8f7 (diff)
isci: Redesign device suspension, abort, cleanup.
This commit changes the means by which outstanding I/Os are handled for cleanup. The likelihood is that this commit will be broken into smaller pieces, however that will be a later revision. Among the changes: - All completion structures have been removed from the tmf and abort paths. - Now using one completed I/O list, with the I/O completed in host bit being used to select error or normal callback paths. Signed-off-by: Jeff Skirvin <jeffrey.d.skirvin@intel.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/scsi/isci/remote_device.h')
-rw-r--r--drivers/scsi/isci/remote_device.h15
1 files changed, 11 insertions, 4 deletions
diff --git a/drivers/scsi/isci/remote_device.h b/drivers/scsi/isci/remote_device.h
index a6a376e200ef..da43698e9eba 100644
--- a/drivers/scsi/isci/remote_device.h
+++ b/drivers/scsi/isci/remote_device.h
@@ -85,7 +85,6 @@ struct isci_remote_device {
85 #define IDEV_GONE 3 85 #define IDEV_GONE 3
86 #define IDEV_IO_READY 4 86 #define IDEV_IO_READY 4
87 #define IDEV_IO_NCQERROR 5 87 #define IDEV_IO_NCQERROR 5
88 #define IDEV_TXRX_SUSPENDED 6
89 unsigned long flags; 88 unsigned long flags;
90 struct kref kref; 89 struct kref kref;
91 struct isci_port *isci_port; 90 struct isci_port *isci_port;
@@ -107,10 +106,8 @@ struct isci_remote_device {
107 106
108/* device reference routines must be called under sci_lock */ 107/* device reference routines must be called under sci_lock */
109static inline struct isci_remote_device *isci_get_device( 108static inline struct isci_remote_device *isci_get_device(
110 struct domain_device *dev) 109 struct isci_remote_device *idev)
111{ 110{
112 struct isci_remote_device *idev = dev->lldd_dev;
113
114 if (idev) 111 if (idev)
115 kref_get(&idev->kref); 112 kref_get(&idev->kref);
116 return idev; 113 return idev;
@@ -378,4 +375,14 @@ enum sci_status isci_remote_device_reset(
378enum sci_status isci_remote_device_reset_complete( 375enum sci_status isci_remote_device_reset_complete(
379 struct isci_host *ihost, 376 struct isci_host *ihost,
380 struct isci_remote_device *idev); 377 struct isci_remote_device *idev);
378
379enum sci_status isci_remote_device_suspend_terminate(
380 struct isci_host *ihost,
381 struct isci_remote_device *idev,
382 struct isci_request *ireq);
383
384enum sci_status isci_remote_device_terminate_requests(
385 struct isci_host *ihost,
386 struct isci_remote_device *idev,
387 struct isci_request *ireq);
381#endif /* !defined(_ISCI_REMOTE_DEVICE_H_) */ 388#endif /* !defined(_ISCI_REMOTE_DEVICE_H_) */