]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blob - src/patches/suse-2.6.27.25/patches.arch/s390-10-02-zfcp_wait_sbal.patch
Reenabled linux-xen and xen-image build
[people/pmueller/ipfire-2.x.git] / src / patches / suse-2.6.27.25 / patches.arch / s390-10-02-zfcp_wait_sbal.patch
1 From: Gerald Schaefer <geraldsc@de.ibm.com>
2 Subject: zfcp: Fix locking problem found during port offline test
3 References: bnc#482818,LTC#51957
4
5 Symptom: Error message from lock dependency checker.
6 Problem: Softirqs not disabled.
7 Solution: Always disable softirqs when acquiring queue lock.
8
9 Acked-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
15 Index: 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