swejis wrote:
>
>>> Can you remind me what target you are using and how many sessions you
>>> should have?
> The m500i have got two portals, so two session are started of for each
> portal.
>
> tcp: [1] 192.168.43.6:3260,2 iqn.
> 1994-12.com.promise.target.a9.39.4.55.1.0.0.20
> tcp: [2] 192.168.43.5:3260,1 iqn.
> 1994-12.com.promise.target.a9.39.4.55.1.0.0.20
>
>>> It looks like only one session has problems.
>
> True indeed, it seem always only one of the two connections reports an
> error, I actually
> tried to shift to the second portal when doing the discovery in order
> to see if that would make
> any difference.
>
> The other/s
>>> look like they are just fine. Are the errors now (before I understood
>>> that it happened when no IO was running) only occuring when you put IO
>>> on the session/disk?
>
> The error only occurs when there is I/O on the connection. I actually
> thought we had fixed the problem when I had not seen any errors for
> days, but
> during that time the machine just idled, as soon as I got some I/O the
> error came back immediately.
>
Hey could you guys try this patch. It is made over open-iscsi-2.0-869.2.
Pasi, I do not think 869 compiles over RHEL, because it has some stuff
backported that the tarball does not expect, so you would have to run a
kernel.org kernel.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"open-iscsi" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/open-iscsi
-~----------~----~----~----~------~----~------~--~---
diff -aurp open-iscsi-2.0-869.2/kernel/libiscsi.c open-iscsi-2.0-869.2.work/kernel/libiscsi.c
--- open-iscsi-2.0-869.2/kernel/libiscsi.c 2008-05-08 19:53:48.000000000 -0500
+++ open-iscsi-2.0-869.2.work/kernel/libiscsi.c 2008-05-29 14:59:48.000000000 -0500
@@ -319,8 +319,10 @@ void iscsi_free_mgmt_task(struct iscsi_c
if (conn->login_mtask == mtask)
return;
- if (conn->ping_mtask == mtask)
+ if (conn->ping_mtask == mtask) {
+ iscsi_conn_printk(KERN_ERR, conn, "freeing ping mtask %lu\n", jiffies);
conn->ping_mtask = NULL;
+ }
__kfifo_put(conn->session->mgmtpool.queue,
(void*)&mtask, sizeof(void*));
}
@@ -479,8 +481,10 @@ static void iscsi_send_nopout(struct isc
struct iscsi_nopout hdr;
struct iscsi_mgmt_task *mtask;
- if (!rhdr && conn->ping_mtask)
+ if (!rhdr && conn->ping_mtask) {
+ iscsi_conn_printk(KERN_ERR, conn, "mtask running %lu\n", conn->last_ping);
return;
+ }
memset(&hdr, 0, sizeof(struct iscsi_nopout));
hdr.opcode = ISCSI_OP_NOOP_OUT | ISCSI_OP_IMMEDIATE;
@@ -635,9 +639,13 @@ static int __iscsi_complete_pdu(struct i
if (iscsi_recv_pdu(conn->cls_conn, hdr, data,
datalen))
rc = ISCSI_ERR_CONN_FAILED;
- } else
+ } else {
+ iscsi_conn_printk(KERN_ERR, conn,
+ "Setting next recv tmo %lu\n",
+ jiffies + conn->recv_timeout);
mod_timer(&conn->transport_timer,
jiffies + conn->recv_timeout);
+ }
iscsi_free_mgmt_task(conn, mtask);
break;
default:
@@ -740,6 +748,8 @@ void iscsi_conn_failure(struct iscsi_con
struct iscsi_session *session = conn->session;
unsigned long flags;
+ dump_stack();
+
spin_lock_irqsave(&session->lock, flags);
if (session->state == ISCSI_STATE_FAILED) {
spin_unlock_irqrestore(&session->lock, flags);
@@ -1381,13 +1391,14 @@ static void iscsi_check_transport_timeou
if (time_before_eq(last_recv + recv_timeout, jiffies)) {
/* send a ping to try to provoke some traffic */
- debug_scsi("Sending nopout as ping on conn %p\n", conn);
+ iscsi_conn_printk(KERN_ERR, conn, "Sending nopout as ping\n");
iscsi_send_nopout(conn, NULL);
next_timeout = conn->last_ping + (conn->ping_timeout * HZ);
} else
next_timeout = last_recv + recv_timeout;
- debug_scsi("Setting next tmo %lu\n", next_timeout);
+ iscsi_conn_printk(KERN_ERR, conn,
+ "Setting next tmo %lu\n", next_timeout);
mod_timer(&conn->transport_timer, next_timeout);
done:
spin_unlock(&session->lock);
Only in open-iscsi-2.0-869.2.work/kernel/: libiscsi.c.orig