Mike Christie wrote:
> I have uploaded a new bug fix release to:
> http://kernel.org/pub/linux/kernel/people/mnc/open-iscsi/releases/open-iscsi-2.0-871.3.tar.gz
> This fixes two bugs:
> 2. Instead of failover taking node.session.timeo.replacement_timeout
> seconds, it takes scsi_cmd->timeout * scsi_cmd->retries seconds (with
> default settings this is about 60 secs * 5 = 3 minutes).

> Both of these bugs are iscsi kernel modules bugs. #2 is a regression
> that was added in the iscsi kernel modules in open-iscsi-2.0-871.0 and
> the iscsi kernel modules in upstream kernels 2.6.28 and newer.

Mike, 

Looking on the 2.0.871.2 to .3 diff (below), I don't  see where is the relation 
to using the 
scsi cmd timeout/retries vs the session replacement_timeout.

More over, this patch has two out of three-four element present in the patch 
posted on your
"Re: Failover time of iSCSI multipath devices" march 3rd response, where there 
you have said that
"There is a race where the session->state can get reset due to the xmit thread 
throwing an error after we have set the session->state but before we have set 
the stop_stage".

Can you clarify this please? maybe there is some error here. I didn't hit the 
problem with the replacement_timeout... also when you say "failover taking" do 
you mean for the multi-path to go and use a different device when working in 
failover configuration (e.g not multibus)?


Or.


diff -r -u -p open-iscsi-2.0-871.2/Changelog open-iscsi-2.0.871.3/Changelog
--- open-iscsi-2.0-871.2/Changelog      2010-01-13 07:53:13.000000000 +0200
+++ open-iscsi-2.0.871.3/Changelog      2010-03-06 00:32:44.000000000 +0200
@@ -1,4 +1,12 @@
 -------------------------------------------------------------------
+open-iscsi-2.0-871.2 - open-iscsi-2.0.871.3
+
+Mike Christie (2):
+      iscsi modules: Fix recovery slowdown
+      iscsi modules: iscsi_tcp: wake xmit thread when killing session
+
+
+-------------------------------------------------------------------
 open-iscsi-2.0-871.1 - open-iscsi-2.0.871.2
 
 Mike Christie (1):
diff -r -u -p open-iscsi-2.0-871.2/kernel/iscsi_tcp.c 
open-iscsi-2.0.871.3/kernel/iscsi_tcp.c
--- open-iscsi-2.0-871.2/kernel/iscsi_tcp.c     2010-01-13 07:53:13.000000000 
+0200
+++ open-iscsi-2.0.871.3/kernel/iscsi_tcp.c     2010-03-06 00:32:44.000000000 
+0200
@@ -568,9 +568,10 @@ static void iscsi_sw_tcp_conn_stop(struc
        struct iscsi_conn *conn = cls_conn->dd_data;
        struct iscsi_tcp_conn *tcp_conn = conn->dd_data;
        struct iscsi_sw_tcp_conn *tcp_sw_conn = tcp_conn->dd_data;
+       struct socket *sock = tcp_sw_conn->sock;
 
        /* userspace may have goofed up and not bound us */
-       if (!tcp_sw_conn->sock)
+       if (!sock)
                return;
        /*
         * Make sure our recv side is stopped.
@@ -581,6 +582,11 @@ static void iscsi_sw_tcp_conn_stop(struc
        set_bit(ISCSI_SUSPEND_BIT, &conn->suspend_rx);
        write_unlock_bh(&tcp_sw_conn->sock->sk->sk_callback_lock);
 
+       if (sock->sk->sk_sleep && waitqueue_active(sock->sk->sk_sleep)) {
+               sock->sk->sk_err = EIO;
+               wake_up_interruptible(sock->sk->sk_sleep);
+       }
+
        iscsi_conn_stop(cls_conn, flag);
        iscsi_sw_tcp_release_conn(conn);
 }
diff -r -u -p open-iscsi-2.0-871.2/kernel/libiscsi.c 
open-iscsi-2.0.871.3/kernel/libiscsi.c
--- open-iscsi-2.0-871.2/kernel/libiscsi.c      2010-01-13 07:53:13.000000000 
+0200
+++ open-iscsi-2.0.871.3/kernel/libiscsi.c      2010-03-06 00:32:44.000000000 
+0200
@@ -2692,14 +2692,15 @@ static void iscsi_start_session_recovery
                session->state = ISCSI_STATE_TERMINATE;
        else if (conn->stop_stage != STOP_CONN_RECOVER)
                session->state = ISCSI_STATE_IN_RECOVERY;
+
+       old_stop_stage = conn->stop_stage;
+       conn->stop_stage = flag;
        spin_unlock_bh(&session->lock);
 
        del_timer_sync(&conn->transport_timer);
        iscsi_suspend_tx(conn);
 
        spin_lock_bh(&session->lock);
-       old_stop_stage = conn->stop_stage;
-       conn->stop_stage = flag;
        conn->c_stage = ISCSI_CONN_STOPPED;
        spin_unlock_bh(&session->lock);
 

-- 
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?hl=en.

Reply via email to