diff options
author | Nicholas Bellinger <nab@linux-iscsi.org> | 2014-06-03 21:27:52 -0400 |
---|---|---|
committer | Nicholas Bellinger <nab@linux-iscsi.org> | 2014-06-03 22:17:32 -0400 |
commit | 2363d196686e44c0158929e7cf96c8589a24a81b (patch) | |
tree | 27fcd067f054f513daf98144f9ee554409de22f6 /drivers/target/iscsi | |
parent | 79d59d08082dd0a0a18f8ceb78c99f9f321d72aa (diff) |
iser-target: Fix multi network portal shutdown regression
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>
Diffstat (limited to 'drivers/target/iscsi')
-rw-r--r-- | drivers/target/iscsi/iscsi_target.c | 1 | ||||
-rw-r--r-- | drivers/target/iscsi/iscsi_target_tpg.c | 3 |
2 files changed, 3 insertions, 1 deletions
diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c index 46588c85d39b..9189bc0a87ae 100644 --- a/drivers/target/iscsi/iscsi_target.c +++ b/drivers/target/iscsi/iscsi_target.c | |||
@@ -460,6 +460,7 @@ int iscsit_del_np(struct iscsi_np *np) | |||
460 | spin_lock_bh(&np->np_thread_lock); | 460 | spin_lock_bh(&np->np_thread_lock); |
461 | np->np_exports--; | 461 | np->np_exports--; |
462 | if (np->np_exports) { | 462 | if (np->np_exports) { |
463 | np->enabled = true; | ||
463 | spin_unlock_bh(&np->np_thread_lock); | 464 | spin_unlock_bh(&np->np_thread_lock); |
464 | return 0; | 465 | return 0; |
465 | } | 466 | } |
diff --git a/drivers/target/iscsi/iscsi_target_tpg.c b/drivers/target/iscsi/iscsi_target_tpg.c index ca1811858afd..1431e8400d28 100644 --- a/drivers/target/iscsi/iscsi_target_tpg.c +++ b/drivers/target/iscsi/iscsi_target_tpg.c | |||
@@ -184,7 +184,8 @@ static void iscsit_clear_tpg_np_login_thread( | |||
184 | return; | 184 | return; |
185 | } | 185 | } |
186 | 186 | ||
187 | tpg_np->tpg_np->enabled = false; | 187 | if (shutdown) |
188 | tpg_np->tpg_np->enabled = false; | ||
188 | iscsit_reset_np_thread(tpg_np->tpg_np, tpg_np, tpg, shutdown); | 189 | iscsit_reset_np_thread(tpg_np->tpg_np, tpg_np, tpg, shutdown); |
189 | } | 190 | } |
190 | 191 | ||