Whamcloud - gitweb
LU-4423 ptlrpc: simplify locking in ptlrpc_add_rqs_to_pool() 11/35511/4
authorNeilBrown <neilb@suse.com>
Sun, 14 Jul 2019 23:41:20 +0000 (19:41 -0400)
committerOleg Drokin <green@whamcloud.com>
Fri, 9 Aug 2019 04:40:57 +0000 (04:40 +0000)
This spinlock is only needed in this function to
protect the list_add_tail(), so make that more
obvious.

This change means that prp_rq_size is set outside of the spinlock, but
as it is only ever read outside of the spinlock, that cannot matter.

Change-Id: Ie986bf3737f0da157d991d8880148512bc4dd777
Signed-off-by: NeilBrown <neilb@suse.com>
Reviewed-on: https://review.whamcloud.com/35511
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Petros Koutoupis <pkoutoupis@cray.com>
Reviewed-by: Shaun Tancheff <stancheff@cray.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/ptlrpc/client.c

index 6812cdb..7338cd6 100644 (file)
@@ -583,13 +583,11 @@ int ptlrpc_add_rqs_to_pool(struct ptlrpc_request_pool *pool, int num_rq)
                 "Trying to change pool size with nonempty pool from %d to %d bytes\n",
                 pool->prp_rq_size, size);
 
-       spin_lock(&pool->prp_lock);
        pool->prp_rq_size = size;
        for (i = 0; i < num_rq; i++) {
                struct ptlrpc_request *req;
                struct lustre_msg *msg;
 
-               spin_unlock(&pool->prp_lock);
                req = ptlrpc_request_cache_alloc(GFP_NOFS);
                if (!req)
                        return i;
@@ -603,8 +601,8 @@ int ptlrpc_add_rqs_to_pool(struct ptlrpc_request_pool *pool, int num_rq)
                req->rq_pool = pool;
                spin_lock(&pool->prp_lock);
                list_add_tail(&req->rq_list, &pool->prp_req_list);
+               spin_unlock(&pool->prp_lock);
        }
-       spin_unlock(&pool->prp_lock);
        return num_rq;
 }
 EXPORT_SYMBOL(ptlrpc_add_rqs_to_pool);