diff options
author | Krishnan Parthasarathi <kp@gluster.com> | 2012-03-07 00:19:29 +0530 |
---|---|---|
committer | Vijay Bellur <vijay@gluster.com> | 2012-03-07 10:17:41 -0800 |
commit | 63281d7eeb5b8ac44e3630ccfbc61774eedf2ae2 (patch) | |
tree | 48d900da52bc01740b1be0c585de26eaf9b017d9 /xlators/protocol/client/src/client-handshake.c | |
parent | ac568d561ba15a148d8de6a3d4431714bce230f6 (diff) |
protocol/client: Added lk_ctx info in fdctx dump
- Added a brief explanation as to why we can't use gf_log
when in statedump.
- Removed gf_log messages from client_priv_dump since
it can cause a 'deadlock' - See statedump.c for explanation
- Added try-lock based accessors for fd_lk_list for dump purposes.
Change-Id: I1d755a4ef2c568acf22fb8c4ab0a33a4f5fd07b4
BUG: 789858
Signed-off-by: Krishnan Parthasarathi <kp@gluster.com>
Reviewed-on: http://review.gluster.com/2882
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Amar Tumballi <amarts@redhat.com>
Reviewed-by: Vijay Bellur <vijay@gluster.com>
Diffstat (limited to 'xlators/protocol/client/src/client-handshake.c')
-rw-r--r-- | xlators/protocol/client/src/client-handshake.c | 20 |
1 files changed, 2 insertions, 18 deletions
diff --git a/xlators/protocol/client/src/client-handshake.c b/xlators/protocol/client/src/client-handshake.c index 34222f845a1..6d6e8ebc77b 100644 --- a/xlators/protocol/client/src/client-handshake.c +++ b/xlators/protocol/client/src/client-handshake.c @@ -470,22 +470,6 @@ out: } int -client_fd_lk_list_empty (fd_lk_ctx_t *lk_ctx) -{ - int ret = 1; - - GF_VALIDATE_OR_GOTO ("client", lk_ctx, out); - - LOCK (&lk_ctx->lock); - { - ret = list_empty (&lk_ctx->lk_list); - } - UNLOCK (&lk_ctx->lock); -out: - return ret; -} - -int client_fd_lk_count (fd_lk_ctx_t *lk_ctx) { int count = 0; @@ -789,7 +773,7 @@ client_reacquire_lock (xlator_t *this, clnt_fd_ctx_t *fdctx) int32_t ret = -1; fd_lk_ctx_t *lk_ctx = NULL; - if (client_fd_lk_list_empty (fdctx->lk_ctx)) { + if (client_fd_lk_list_empty (fdctx->lk_ctx, _gf_false)) { gf_log (this->name, GF_LOG_WARNING, "fd lock list is empty"); decrement_reopen_fd_count (this, (clnt_conf_t *)this->private); @@ -874,7 +858,7 @@ client3_1_reopen_cbk (struct rpc_req *req, struct iovec *iov, int count, fdctx->remote_fd = rsp.fd; if (!fdctx->released) { list_add_tail (&fdctx->sfd_pos, &conf->saved_fds); - if (!client_fd_lk_list_empty (fdctx->lk_ctx)) + if (!client_fd_lk_list_empty (fdctx->lk_ctx, _gf_false)) attempt_lock_recovery = _gf_true; fdctx = NULL; } |