iser-target: Fix multi network portal shutdown regression
authorNicholas Bellinger <nab@linux-iscsi.org>
Wed, 4 Jun 2014 01:27:52 +0000 (18:27 -0700)
committerNicholas Bellinger <nab@linux-iscsi.org>
Wed, 4 Jun 2014 02:17:32 +0000 (19:17 -0700)
This patch fixes a iser-target specific regression introduced in
v3.15-rc6 with:

commit 14f4b54fe38f3a8f8392a50b951c8aa43b63687a
Author: Sagi Grimberg <sagig@mellanox.com>
Date:   Tue Apr 29 13:13:47 2014 +0300

    Target/iscsi,iser: Avoid accepting transport connections during stop stage

where the change to set iscsi_np->enabled = false within
iscsit_clear_tpg_np_login_thread() meant that a iscsi_np with
two iscsi_tpg_np exports would have it's parent iscsi_np set
to a disabled state, even if other iscsi_tpg_np exports still
existed.

This patch changes iscsit_clear_tpg_np_login_thread() to only
set iscsi_np->enabled = false when shutdown = true, and also
changes iscsit_del_np() to set iscsi_np->enabled = true when
iscsi_np->np_exports is non zero.

Cc: Sagi Grimberg <sagig@dev.mellanox.co.il>
Cc: stable@vger.kernel.org # 3.10+
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
drivers/target/iscsi/iscsi_target.c
drivers/target/iscsi/iscsi_target_tpg.c

index 46588c85d39bd0ce206f213aebba9330db7e33b8..9189bc0a87aef18df10bf2c0003d2c1e4c0bc65a 100644 (file)
@@ -460,6 +460,7 @@ int iscsit_del_np(struct iscsi_np *np)
        spin_lock_bh(&np->np_thread_lock);
        np->np_exports--;
        if (np->np_exports) {
+               np->enabled = true;
                spin_unlock_bh(&np->np_thread_lock);
                return 0;
        }
index ca1811858afd01fa4b09ba6e1523f32bd0c3e1b2..1431e8400d28b41c4ca21fc0563a8e3df1b7828a 100644 (file)
@@ -184,7 +184,8 @@ static void iscsit_clear_tpg_np_login_thread(
                return;
        }
 
-       tpg_np->tpg_np->enabled = false;
+       if (shutdown)
+               tpg_np->tpg_np->enabled = false;
        iscsit_reset_np_thread(tpg_np->tpg_np, tpg_np, tpg, shutdown);
 }