diff options
author | Jeff Skirvin <jeffrey.d.skirvin@intel.com> | 2012-03-09 01:42:01 -0500 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2012-05-17 17:33:41 -0400 |
commit | 31a38ef0a5ad12dbe262ca55d0a905657be55a8d (patch) | |
tree | cf05c3c5fb97670711e58edc6708d7f52e02f418 /drivers/scsi/isci/remote_node_context.h | |
parent | 08c031e4e3294a66a64074e12482abda846dd39c (diff) |
isci: Implement waiting for suspend in the abort path.
In order to prevent a device from receiving an I/O request while still
in an RNC suspending or resuming state (and therefore failing that
I/O back to libsas with a reset required status) wait for the RNC state
change before proceding in the abort path.
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_node_context.h')
-rw-r--r-- | drivers/scsi/isci/remote_node_context.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/scsi/isci/remote_node_context.h b/drivers/scsi/isci/remote_node_context.h index 9eee304fdf9a..c61c02e095ad 100644 --- a/drivers/scsi/isci/remote_node_context.h +++ b/drivers/scsi/isci/remote_node_context.h | |||
@@ -170,6 +170,7 @@ struct sci_remote_node_context { | |||
170 | */ | 170 | */ |
171 | u32 suspend_type; | 171 | u32 suspend_type; |
172 | enum sci_remote_node_suspension_reasons suspend_reason; | 172 | enum sci_remote_node_suspension_reasons suspend_reason; |
173 | u32 suspend_count; | ||
173 | 174 | ||
174 | /** | 175 | /** |
175 | * This field is true if the remote node context is resuming from its current | 176 | * This field is true if the remote node context is resuming from its current |
@@ -203,6 +204,8 @@ void sci_remote_node_context_construct(struct sci_remote_node_context *rnc, | |||
203 | bool sci_remote_node_context_is_ready( | 204 | bool sci_remote_node_context_is_ready( |
204 | struct sci_remote_node_context *sci_rnc); | 205 | struct sci_remote_node_context *sci_rnc); |
205 | 206 | ||
207 | bool sci_remote_node_context_is_suspended(struct sci_remote_node_context *sci_rnc); | ||
208 | |||
206 | enum sci_status sci_remote_node_context_event_handler(struct sci_remote_node_context *sci_rnc, | 209 | enum sci_status sci_remote_node_context_event_handler(struct sci_remote_node_context *sci_rnc, |
207 | u32 event_code); | 210 | u32 event_code); |
208 | enum sci_status sci_remote_node_context_destruct(struct sci_remote_node_context *sci_rnc, | 211 | enum sci_status sci_remote_node_context_destruct(struct sci_remote_node_context *sci_rnc, |