Hi Greg, On Tue, 2014-06-03 at 23:06 -0700, gregkh@xxxxxxxxxxxxxxxxxxx wrote: > The patch below does not apply to the 3.14-stable tree. > If someone wants it applied there, or to any other stable or longterm > tree, then please email the backport, including the original git commit > id to <stable@xxxxxxxxxxxxxxx>. > This patch ended up introducing a regression, for which a patch is queued up for v3.15.0.. So that said, how do you prefer to handle this..? Either I can send an updated patch for <= v3.14.y, and you apply the regression fix in a subsequent stable release, or wait and apply this patch + the regression fix together once the regression fix hits mainline (will be happening by tomorrow). Which do you prefer..? Thank you, --nab > thanks, > > greg k-h > > ------------------ original commit in Linus's tree ------------------ > > From 14f4b54fe38f3a8f8392a50b951c8aa43b63687a Mon Sep 17 00:00:00 2001 > From: Sagi Grimberg <sagig@xxxxxxxxxxxx> > Date: Tue, 29 Apr 2014 13:13:47 +0300 > Subject: [PATCH] Target/iscsi,iser: Avoid accepting transport connections > during stop stage > > 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@xxxxxxxxxxxx> > Cc: stable@xxxxxxxxxxxxxxx # 3.10+ > Signed-off-by: Nicholas Bellinger <nab@xxxxxxxxxxxxxxx> > > diff --git a/drivers/infiniband/ulp/isert/ib_isert.c b/drivers/infiniband/ulp/isert/ib_isert.c > index 826eaf5741f6..a1710465faaf 100644 > --- a/drivers/infiniband/ulp/isert/ib_isert.c > +++ b/drivers/infiniband/ulp/isert/ib_isert.c > @@ -562,7 +562,15 @@ isert_connect_request(struct rdma_cm_id *cma_id, struct rdma_cm_event *event) > struct isert_device *device; > struct ib_device *ib_dev = cma_id->device; > int ret = 0; > - u8 pi_support = np->tpg_np->tpg->tpg_attrib.t10_pi; > + u8 pi_support; > + > + 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); > @@ -653,6 +661,7 @@ isert_connect_request(struct rdma_cm_id *cma_id, struct rdma_cm_event *event) > goto out_mr; > } > > + pi_support = np->tpg_np->tpg->tpg_attrib.t10_pi; > if (pi_support && !device->pi_capable) { > pr_err("Protection information requested but not supported\n"); > ret = -EINVAL; > diff --git a/drivers/target/iscsi/iscsi_target_core.h b/drivers/target/iscsi/iscsi_target_core.h > index 6960f22909ae..302eb3b78715 100644 > --- a/drivers/target/iscsi/iscsi_target_core.h > +++ b/drivers/target/iscsi/iscsi_target_core.h > @@ -775,6 +775,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; > diff --git a/drivers/target/iscsi/iscsi_target_login.c b/drivers/target/iscsi/iscsi_target_login.c > index 8739b98f6f93..b72d8550e8bc 100644 > --- a/drivers/target/iscsi/iscsi_target_login.c > +++ b/drivers/target/iscsi/iscsi_target_login.c > @@ -984,6 +984,7 @@ int iscsi_target_setup_login_socket( > } > > np->np_transport = t; > + np->enabled = true; > return 0; > } > > diff --git a/drivers/target/iscsi/iscsi_target_tpg.c b/drivers/target/iscsi/iscsi_target_tpg.c > index eb96b20dc09e..ca1811858afd 100644 > --- 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_thread( > return; > } > > + tpg_np->tpg_np->enabled = false; > iscsit_reset_np_thread(tpg_np->tpg_np, tpg_np, tpg, shutdown); > } > > -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html