RDMA/rtrs-clt: During add_path change for_new_clt according to path_num
authorMd Haris Iqbal <haris.iqbal@ionos.com>
Fri, 6 Aug 2021 11:21:07 +0000 (13:21 +0200)
committerJason Gunthorpe <jgg@nvidia.com>
Sun, 22 Aug 2021 22:22:58 +0000 (19:22 -0300)
When all the paths are removed for a session, the addition of the first
path is like a new session for the storage server.

Hence, for_new_clt has to be set to 1.

Link: https://lore.kernel.org/r/20210806112112.124313-2-haris.iqbal@ionos.com
Signed-off-by: Md Haris Iqbal <haris.iqbal@ionos.com>
Signed-off-by: Jack Wang <jinpu.wang@ionos.com>
Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/ulp/rtrs/rtrs-clt.c

index fc440a08e112778f875e514ba9f1da582967bbfa..da6e9d3ae08bcc92c8a1d9f893adedd6f484cad9 100644 (file)
@@ -3082,6 +3082,18 @@ int rtrs_clt_create_path_from_sysfs(struct rtrs_clt *clt,
        if (IS_ERR(sess))
                return PTR_ERR(sess);
 
+       mutex_lock(&clt->paths_mutex);
+       if (clt->paths_num == 0) {
+               /*
+                * When all the paths are removed for a session,
+                * the addition of the first path is like a new session for
+                * the storage server
+                */
+               sess->for_new_clt = 1;
+       }
+
+       mutex_unlock(&clt->paths_mutex);
+
        /*
         * It is totally safe to add path in CONNECTING state: coming
         * IO will never grab it.  Also it is very important to add