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 open-iscsi@googlegroups.com
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

Reply via email to