]> git.ipfire.org Git - ipfire-2.x.git/blame - src/patches/suse-2.6.27.39/patches.arch/s390-10-02-zfcp_wait_sbal.patch
Fix oinkmaster patch.
[ipfire-2.x.git] / src / patches / suse-2.6.27.39 / patches.arch / s390-10-02-zfcp_wait_sbal.patch
CommitLineData
2cb7cef9
BS
1From: Gerald Schaefer <geraldsc@de.ibm.com>
2Subject: zfcp: Fix locking problem found during port offline test
3References: bnc#482818,LTC#51957
4
5Symptom: Error message from lock dependency checker.
6Problem: Softirqs not disabled.
7Solution: Always disable softirqs when acquiring queue lock.
8
9Acked-by: John Jolly <jjolly@suse.de>
10---
11
12 drivers/s390/scsi/zfcp_fsf.c | 18 +++++++++---------
13 1 file changed, 9 insertions(+), 9 deletions(-)
14
15Index: linux-sles11/drivers/s390/scsi/zfcp_fsf.c
16===================================================================
17--- linux-sles11.orig/drivers/s390/scsi/zfcp_fsf.c
18+++ linux-sles11/drivers/s390/scsi/zfcp_fsf.c
19@@ -927,8 +927,8 @@ struct zfcp_fsf_req *zfcp_fsf_abort_fcp_
20 struct qdio_buffer_element *sbale;
21 struct zfcp_fsf_req *req = NULL;
22
23- spin_lock(&adapter->req_q_lock);
24- if (!zfcp_fsf_sbal_available(adapter))
25+ spin_lock_bh(&adapter->req_q_lock);
26+ if (zfcp_fsf_req_sbal_get(adapter))
27 goto out;
28 req = zfcp_fsf_req_create(adapter, FSF_QTCB_ABORT_FCP_CMND,
29 req_flags, adapter->pool.fsf_req_abort);
30@@ -959,7 +959,7 @@ out_error_free:
31 zfcp_fsf_req_free(req);
32 req = NULL;
33 out:
34- spin_unlock(&adapter->req_q_lock);
35+ spin_unlock_bh(&adapter->req_q_lock);
36 return req;
37 }
38
39@@ -1223,7 +1223,7 @@ int zfcp_fsf_exchange_config_data(struct
40 int retval = -EIO;
41
42 spin_lock_bh(&adapter->req_q_lock);
43- if (!zfcp_fsf_sbal_available(adapter))
44+ if (zfcp_fsf_req_sbal_get(adapter))
45 goto out;
46 req = zfcp_fsf_req_create(adapter,
47 FSF_QTCB_EXCHANGE_CONFIG_DATA,
48@@ -1319,7 +1319,7 @@ int zfcp_fsf_exchange_port_data(struct z
49 return -EOPNOTSUPP;
50
51 spin_lock_bh(&adapter->req_q_lock);
52- if (!zfcp_fsf_sbal_available(adapter))
53+ if (zfcp_fsf_req_sbal_get(adapter))
54 goto out;
55 req = zfcp_fsf_req_create(adapter, FSF_QTCB_EXCHANGE_PORT_DATA,
56 ZFCP_REQ_AUTO_CLEANUP,
57@@ -1365,7 +1365,7 @@ int zfcp_fsf_exchange_port_data_sync(str
58 return -EOPNOTSUPP;
59
60 spin_lock_bh(&adapter->req_q_lock);
61- if (!zfcp_fsf_sbal_available(adapter))
62+ if (zfcp_fsf_req_sbal_get(adapter))
63 goto out;
64
65 req = zfcp_fsf_req_create(adapter, FSF_QTCB_EXCHANGE_PORT_DATA, 0,
66@@ -2458,8 +2458,8 @@ struct zfcp_fsf_req *zfcp_fsf_send_fcp_c
67 ZFCP_STATUS_COMMON_UNBLOCKED)))
68 return NULL;
69
70- spin_lock(&adapter->req_q_lock);
71- if (!zfcp_fsf_sbal_available(adapter))
72+ spin_lock_bh(&adapter->req_q_lock);
73+ if (zfcp_fsf_req_sbal_get(adapter))
74 goto out;
75 req = zfcp_fsf_req_create(adapter, FSF_QTCB_FCP_CMND, req_flags,
76 adapter->pool.fsf_req_scsi);
77@@ -2493,7 +2493,7 @@ struct zfcp_fsf_req *zfcp_fsf_send_fcp_c
78 zfcp_fsf_req_free(req);
79 req = NULL;
80 out:
81- spin_unlock(&adapter->req_q_lock);
82+ spin_unlock_bh(&adapter->req_q_lock);
83 return req;
84 }
85