aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/ibmvscsi/ibmvscsi.h
diff options
context:
space:
mode:
authorBrian King <brking@linux.vnet.ibm.com>2010-06-17 14:56:00 -0400
committerJames Bottomley <James.Bottomley@suse.de>2010-07-27 13:03:46 -0400
commit0f33ece5bc3d5a9567b65cfbc736e8f206ecfc7b (patch)
tree4b271d2c1373e1882ecffa8f4baf247a9f578c15 /drivers/scsi/ibmvscsi/ibmvscsi.h
parent06395193b20124663b83b2894da827aec7e9d920 (diff)
[SCSI] ibmvscsi: Fix softlockup on resume
This fixes a softlockup seen on resume. During resume, the CRQ must be reenabled. However, the H_ENABLE_CRQ hcall used to do this may return H_BUSY or H_LONG_BUSY. When this happens, the caller is expected to retry later. This patch changes a simple loop, which was causing the softlockup, to a loop at task level which sleeps between retries rather than simply spinning. Signed-off-by: Brian King <brking@linux.vnet.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/ibmvscsi/ibmvscsi.h')
-rw-r--r--drivers/scsi/ibmvscsi/ibmvscsi.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/scsi/ibmvscsi/ibmvscsi.h b/drivers/scsi/ibmvscsi/ibmvscsi.h
index 9cb7c6a773e1..02197a2b22b9 100644
--- a/drivers/scsi/ibmvscsi/ibmvscsi.h
+++ b/drivers/scsi/ibmvscsi/ibmvscsi.h
@@ -91,12 +91,16 @@ struct event_pool {
91struct ibmvscsi_host_data { 91struct ibmvscsi_host_data {
92 atomic_t request_limit; 92 atomic_t request_limit;
93 int client_migrated; 93 int client_migrated;
94 int reset_crq;
95 int reenable_crq;
94 struct device *dev; 96 struct device *dev;
95 struct event_pool pool; 97 struct event_pool pool;
96 struct crq_queue queue; 98 struct crq_queue queue;
97 struct tasklet_struct srp_task; 99 struct tasklet_struct srp_task;
98 struct list_head sent; 100 struct list_head sent;
99 struct Scsi_Host *host; 101 struct Scsi_Host *host;
102 struct task_struct *work_thread;
103 wait_queue_head_t work_wait_q;
100 struct mad_adapter_info_data madapter_info; 104 struct mad_adapter_info_data madapter_info;
101 struct capabilities caps; 105 struct capabilities caps;
102 dma_addr_t caps_addr; 106 dma_addr_t caps_addr;