Hi Greg,

On Tue, 2014-06-03 at 23:06 -0700, [email protected] 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 <[email protected]>.
> 

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 <[email protected]>
> 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 <[email protected]>
> Cc: [email protected] # 3.10+
> Signed-off-by: Nicholas Bellinger <[email protected]>
> 
> 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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to