| From 2363d196686e44c0158929e7cf96c8589a24a81b Mon Sep 17 00:00:00 2001 |
| From: Nicholas Bellinger <nab@linux-iscsi.org> |
| Date: Tue, 3 Jun 2014 18:27:52 -0700 |
| Subject: iser-target: Fix multi network portal shutdown regression |
| |
| From: Nicholas Bellinger <nab@linux-iscsi.org> |
| |
| commit 2363d196686e44c0158929e7cf96c8589a24a81b upstream. |
| |
| 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> |
| Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/target/iscsi/iscsi_target.c | 1 + |
| drivers/target/iscsi/iscsi_target_tpg.c | 3 ++- |
| 2 files changed, 3 insertions(+), 1 deletion(-) |
| |
| --- 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) |
| 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; |
| } |
| --- 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_th |
| 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); |
| } |
| |