]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.14-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 12 Jun 2014 22:28:30 +0000 (15:28 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 12 Jun 2014 22:28:30 +0000 (15:28 -0700)
added patches:
target-iscsi-iser-avoid-accepting-transport-connections-during-stop-stage.patch

queue-3.14/series
queue-3.14/target-iscsi-iser-avoid-accepting-transport-connections-during-stop-stage.patch [new file with mode: 0644]

index 86222ed0c9840dacf7580174084dff2a158e9af8..581986c4bdd2c6b2477c68d83b0f3c556618d4d6 100644 (file)
@@ -1,3 +1,4 @@
 fs-userns-change-inode_capable-to-capable_wrt_inode_uidgid.patch
 netfilter-ipv4-defrag-set-local_df-flag-on-defragmented-skb.patch
 mips-asm-thread_info-add-_tif_seccomp-flag.patch
+target-iscsi-iser-avoid-accepting-transport-connections-during-stop-stage.patch
diff --git a/queue-3.14/target-iscsi-iser-avoid-accepting-transport-connections-during-stop-stage.patch b/queue-3.14/target-iscsi-iser-avoid-accepting-transport-connections-during-stop-stage.patch
new file mode 100644 (file)
index 0000000..b46c6a3
--- /dev/null
@@ -0,0 +1,77 @@
+From 14f4b54fe38f3a8f8392a50b951c8aa43b63687a Mon Sep 17 00:00:00 2001
+From: Sagi Grimberg <sagig@mellanox.com>
+Date: Tue, 29 Apr 2014 13:13:47 +0300
+Subject: Target/iscsi,iser: Avoid accepting transport connections during stop stage
+
+From: Sagi Grimberg <sagig@mellanox.com>
+
+commit 14f4b54fe38f3a8f8392a50b951c8aa43b63687a upstream.
+
+When the target is in stop stage, iSER transport initiates RDMA disconnects.
+The iSER initiator may wish to establish a new connection over the
+still existing network portal. In this case iSER transport should not
+accept and resume new RDMA connections. In order to learn that, iscsi_np
+is added with enabled flag so the iSER transport can check when deciding
+weather to accept and resume a new connection request.
+
+The iscsi_np is enabled after successful transport setup, and disabled
+before iscsi_np login threads are cleaned up.
+
+Signed-off-by: Sagi Grimberg <sagig@mellanox.com>
+Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/infiniband/ulp/isert/ib_isert.c   |    8 ++++++++
+ drivers/target/iscsi/iscsi_target_core.h  |    1 +
+ drivers/target/iscsi/iscsi_target_login.c |    1 +
+ drivers/target/iscsi/iscsi_target_tpg.c   |    1 +
+ 4 files changed, 11 insertions(+)
+
+--- a/drivers/infiniband/ulp/isert/ib_isert.c
++++ b/drivers/infiniband/ulp/isert/ib_isert.c
+@@ -489,6 +489,14 @@ isert_connect_request(struct rdma_cm_id
+       struct ib_device *ib_dev = cma_id->device;
+       int ret = 0;
++      spin_lock_bh(&np->np_thread_lock);
++      if (!np->enabled) {
++              spin_unlock_bh(&np->np_thread_lock);
++              pr_debug("iscsi_np is not enabled, reject connect request\n");
++              return rdma_reject(cma_id, NULL, 0);
++      }
++      spin_unlock_bh(&np->np_thread_lock);
++
+       pr_debug("Entering isert_connect_request cma_id: %p, context: %p\n",
+                cma_id, cma_id->context);
+--- a/drivers/target/iscsi/iscsi_target_core.h
++++ b/drivers/target/iscsi/iscsi_target_core.h
+@@ -773,6 +773,7 @@ struct iscsi_np {
+       int                     np_ip_proto;
+       int                     np_sock_type;
+       enum np_thread_state_table np_thread_state;
++      bool                    enabled;
+       enum iscsi_timer_flags_table np_login_timer_flags;
+       u32                     np_exports;
+       enum np_flags_table     np_flags;
+--- a/drivers/target/iscsi/iscsi_target_login.c
++++ b/drivers/target/iscsi/iscsi_target_login.c
+@@ -981,6 +981,7 @@ int iscsi_target_setup_login_socket(
+       }
+       np->np_transport = t;
++      np->enabled = true;
+       return 0;
+ }
+--- a/drivers/target/iscsi/iscsi_target_tpg.c
++++ b/drivers/target/iscsi/iscsi_target_tpg.c
+@@ -184,6 +184,7 @@ static void iscsit_clear_tpg_np_login_th
+               return;
+       }
++      tpg_np->tpg_np->enabled = false;
+       iscsit_reset_np_thread(tpg_np->tpg_np, tpg_np, tpg, shutdown);
+ }