]> git.ipfire.org Git - ipfire-2.x.git/blob - src/patches/suse-2.6.27.39/patches.fixes/iscsi_tcp-Use-last_recv-to-track-xmits
Fix oinkmaster patch.
[ipfire-2.x.git] / src / patches / suse-2.6.27.39 / patches.fixes / iscsi_tcp-Use-last_recv-to-track-xmits
1 From: Hannes Reinecke <hare@suse.de>
2 Date: Tue, 18 Aug 2009 10:52:27 +0200
3 Subject: iscsi_tcp: Use 'last_recv' to track xmits
4 References: bnc#472432
5 Patch-Mainline: Not applicable
6
7 A successful transmit also indicates that the
8 target is alive, so can use the 'last_recv'
9 count to track that, too.
10
11 Signed-off-by: Hannes Reinecke <hare@suse.de>
12 ---
13 drivers/scsi/iscsi_tcp.c | 15 +++++++++++++--
14 1 files changed, 13 insertions(+), 2 deletions(-)
15
16 diff --git a/drivers/scsi/iscsi_tcp.c b/drivers/scsi/iscsi_tcp.c
17 index a648919..2bbfd2b 100644
18 --- a/drivers/scsi/iscsi_tcp.c
19 +++ b/drivers/scsi/iscsi_tcp.c
20 @@ -1140,14 +1140,25 @@ iscsi_xmit(struct iscsi_conn *conn)
21 * is getting stopped. libiscsi will know so propogate err
22 * for it to do the right thing.
23 */
24 - if (rc == -EAGAIN)
25 + if (rc == -EAGAIN) {
26 + if (consumed > 0) {
27 + conn->txdata_octets += consumed;
28 + conn->last_recv = jiffies;
29 + }
30 return rc;
31 - else if (rc < 0) {
32 + }
33 + if (rc < 0) {
34 rc = ISCSI_ERR_CONN_FAILED;
35 goto error;
36 } else if (rc == 0)
37 break;
38
39 + /*
40 + * Hijack the 'last_recv' for counting xmits, too.
41 + * This avoids transport timeouts when running
42 + * write-intensive loads.
43 + */
44 + conn->last_recv = jiffies;
45 consumed += rc;
46
47 if (segment->total_copied >= segment->total_size) {
48 --
49 1.6.0.2
50