From b6bf52bdcc78c7a803430ebcd7be367fbbf9cc4d Mon Sep 17 00:00:00 2001 From: Rajesh Amaravathi Date: Thu, 15 Nov 2012 14:20:39 +0530 Subject: nfs: avoid blocking lock calls in statedump code This change replaces LOCK () with TRY_LOCK () in nlm statedump code. Change-Id: I28c558b68854cf08c3a8190a00d6e3d507317628 BUG: 843819 Signed-off-by: Rajesh Amaravathi Reviewed-on: http://review.gluster.org/4193 Reviewed-by: Vijay Bellur Tested-by: Gluster Build System --- xlators/nfs/server/src/nlm4.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'xlators/nfs/server/src/nlm4.c') diff --git a/xlators/nfs/server/src/nlm4.c b/xlators/nfs/server/src/nlm4.c index 2e02a5836c8..4ee3596fd8f 100644 --- a/xlators/nfs/server/src/nlm4.c +++ b/xlators/nfs/server/src/nlm4.c @@ -2455,7 +2455,8 @@ nlm_priv (xlator_t *this) gf_proc_dump_add_section("nfs.nlm"); - LOCK (&nlm_client_list_lk); + if (TRY_LOCK (&nlm_client_list_lk)) + goto out; list_for_each_entry (client, &nlm_client_list, nlm_clients) { @@ -2478,7 +2479,15 @@ nlm_priv (xlator_t *this) gf_proc_dump_build_key (key, "nlm", "client-count"); gf_proc_dump_write (key, "%d", client_count); - + ret = 0; UNLOCK (&nlm_client_list_lk); + + out: + if (ret) { + gf_proc_dump_build_key (key, "nlm", "statedump_error"); + gf_proc_dump_write (key, "Unable to dump nlm state because " + "nlm_client_list_lk lock couldn't be acquired"); + } + return ret; } -- cgit