a902a1d5ca
Resolves: bz#1648893 bz#1654161 Signed-off-by: Milind Changire <mchangir@redhat.com>
65 lines
2.3 KiB
Diff
65 lines
2.3 KiB
Diff
From 61fd5c07791d82e830d7caac008247765437b7ca Mon Sep 17 00:00:00 2001
|
|
From: Sanju Rakonde <srakonde@redhat.com>
|
|
Date: Wed, 2 Jan 2019 12:29:53 +0530
|
|
Subject: [PATCH 496/498] glusterd: kill the process without releasing the
|
|
cleanup mutex lock
|
|
|
|
Problem:
|
|
glusterd acquires a cleanup mutex lock before it starts
|
|
cleanup process, so that any other thread which tries to acquire
|
|
lock on any resource will be blocked on cleanup mutex lock.
|
|
|
|
We don't want any thread to try to acquire any resource, once
|
|
the cleanup is started. because other threads might try to acquire
|
|
lock on resources which are already freed by the thread which is
|
|
going though the cleanup phase.
|
|
|
|
previously we were releasing the cleanup mutex lock before the
|
|
process exit. As we are releasing the cleanup mutex lock, before
|
|
the process can exit some other thread which is blocked on
|
|
cleanup mutex lock is acquiring the cleanup mutex lock and
|
|
trying to acquire some resources which are already freed as a
|
|
part of cleanup. This is leading glusterd to crash.
|
|
|
|
Solution: We should exit the process without releasing the
|
|
cleanup mutex lock.
|
|
|
|
> Change-Id: Ibae1c62260f141019017f7a547519a5d38dc2bb6
|
|
> fixes: bz#1654270
|
|
> Signed-off-by: Sanju Rakonde <srakonde@redhat.com>
|
|
|
|
upstream patch: https://review.gluster.org/#/c/glusterfs/+/21974/
|
|
|
|
Change-Id: Ibae1c62260f141019017f7a547519a5d38dc2bb6
|
|
BUG: 1654161
|
|
Signed-off-by: Sanju Rakonde <srakonde@redhat.com>
|
|
Reviewed-on: https://code.engineering.redhat.com/gerrit/159635
|
|
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
|
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
|
|
---
|
|
glusterfsd/src/glusterfsd.c | 7 +++----
|
|
1 file changed, 3 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/glusterfsd/src/glusterfsd.c b/glusterfsd/src/glusterfsd.c
|
|
index 57effbd..990036c 100644
|
|
--- a/glusterfsd/src/glusterfsd.c
|
|
+++ b/glusterfsd/src/glusterfsd.c
|
|
@@ -1446,11 +1446,10 @@ cleanup_and_exit (int signum)
|
|
#endif
|
|
|
|
trav = NULL;
|
|
+ /* NOTE: Only the least significant 8 bits i.e (signum & 255)
|
|
+ will be available to parent process on calling exit() */
|
|
+ exit(abs(signum));
|
|
}
|
|
- pthread_mutex_unlock(&ctx->cleanup_lock);
|
|
- /* NOTE: Only the least significant 8 bits i.e (signum & 255)
|
|
- will be available to parent process on calling exit() */
|
|
- exit(abs(signum));
|
|
}
|
|
|
|
|
|
--
|
|
1.8.3.1
|
|
|