Commit 2363d196 authored by Nicholas Bellinger's avatar Nicholas Bellinger

iser-target: Fix multi network portal shutdown regression

This patch fixes a iser-target specific regression introduced in
v3.15-rc6 with:

commit 14f4b54f
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: default avatarNicholas Bellinger <nab@linux-iscsi.org>
parent 79d59d08
...@@ -460,6 +460,7 @@ int iscsit_del_np(struct iscsi_np *np) ...@@ -460,6 +460,7 @@ int iscsit_del_np(struct iscsi_np *np)
spin_lock_bh(&np->np_thread_lock); spin_lock_bh(&np->np_thread_lock);
np->np_exports--; np->np_exports--;
if (np->np_exports) { if (np->np_exports) {
np->enabled = true;
spin_unlock_bh(&np->np_thread_lock); spin_unlock_bh(&np->np_thread_lock);
return 0; return 0;
} }
......
...@@ -184,7 +184,8 @@ static void iscsit_clear_tpg_np_login_thread( ...@@ -184,7 +184,8 @@ static void iscsit_clear_tpg_np_login_thread(
return; 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); iscsit_reset_np_thread(tpg_np->tpg_np, tpg_np, tpg, shutdown);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment