summaryrefslogtreecommitdiffstats
path: root/rpc
diff options
context:
space:
mode:
authorMohit Agrawal <moagrawal@redhat.com>2020-03-12 21:12:13 +0530
committerMOHIT AGRAWAL <moagrawa@redhat.com>2020-03-20 04:08:42 +0000
commitfb20713b380e1df8d7f9e9df96563be2f9144fd6 (patch)
treecd61da00b382c7b805e74d5e9370e11df2718f49 /rpc
parent5410cc35ea09b1932c8eae4933fbf84f462e61ea (diff)
Posix: Use simple approach to close fd
Problem: posix_release(dir) functions add the fd's into a ctx->janitor_fds and janitor thread closes the fd's.In brick_mux environment it is difficult to handle race condition in janitor threads because brick spawns a single janitor thread for all bricks. Solution: Use synctask to execute posix_release(dir) functions instead of using background a thread to close fds. Credits: Pranith Karampuri <pkarampu@redhat.com> Change-Id: Iffb031f0695a7da83d5a2f6bac8863dad225317e Fixes: bz#1811631 Signed-off-by: Mohit Agrawal <moagrawal@redhat.com>
Diffstat (limited to 'rpc')
-rw-r--r--rpc/rpc-lib/src/rpcsvc.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/rpc/rpc-lib/src/rpcsvc.c b/rpc/rpc-lib/src/rpcsvc.c
index 81d40c8..f7d911b 100644
--- a/rpc/rpc-lib/src/rpcsvc.c
+++ b/rpc/rpc-lib/src/rpcsvc.c
@@ -365,6 +365,12 @@ rpcsvc_program_actor(rpcsvc_request_t *req)
req->ownthread = program->ownthread;
req->synctask = program->synctask;
+ if (((req->procnum == GFS3_OP_RELEASE) ||
+ (req->procnum == GFS3_OP_RELEASEDIR)) &&
+ (program->prognum == GLUSTER_FOP_PROGRAM)) {
+ req->ownthread = _gf_false;
+ req->synctask = _gf_true;
+ }
err = SUCCESS;
gf_log(GF_RPCSVC, GF_LOG_TRACE, "Actor found: %s - %s for %s",