diff options
author | Jeff Skirvin <jeffrey.d.skirvin@intel.com> | 2012-03-09 01:41:54 -0500 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2012-05-17 17:33:38 -0400 |
commit | 14aaa9f0a318bd04cbb9d822524b817e95d8b343 (patch) | |
tree | 5f6292ec671d0993c1df51586dea4fb7750d1cd9 /drivers/scsi/isci/remote_device.h | |
parent | d80ecd5726ce49b5da457d562804b40f0183e8f7 (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.h | 15 |
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 */ |
109 | static inline struct isci_remote_device *isci_get_device( | 108 | static 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( | |||
378 | enum sci_status isci_remote_device_reset_complete( | 375 | enum 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 | |||
379 | enum sci_status isci_remote_device_suspend_terminate( | ||
380 | struct isci_host *ihost, | ||
381 | struct isci_remote_device *idev, | ||
382 | struct isci_request *ireq); | ||
383 | |||
384 | enum 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_) */ |