From 9400b6f2c8aa219a493961e0ab9770b7f12e80d2 Mon Sep 17 00:00:00 2001 From: Mohit Agrawal Date: Thu, 12 Jul 2018 13:29:48 +0530 Subject: glusterd: Add multiple checks before attach/start a brick Problem: In brick mux scenario sometime glusterd is not able to start/attach a brick and gluster v status shows brick is already running Solution: 1) To make sure brick is running check brick_path in /proc//fd , if a brick is consumed by the brick process it means brick stack is come up otherwise not 2) Before start/attach a brick check if a brick is mounted or not 3) At the time of printing volume status check brick is consumed by any brick process Test: To test the same followed procedure 1) Setup brick mux environment on a vm 2) Put a breaking point in gdb in function posix_health_check_thread_proc at the time of notify GF_EVENT_CHILD_DOWN event 3) unmount anyone brick path forcefully 4) check gluster v status it will show N/A for the brick 5) Try to start volume with force option, glusterd throw message "No device available for mount brick" 6) Mount the brick_root path 7) Try to start volume with force option 8) down brick is started successfully Change-Id: I91898dad21d082ebddd12aa0d1f7f0ed012bdf69 fixes: bz#1595320 Signed-off-by: Mohit Agrawal --- glusterfsd/src/glusterfsd-mgmt.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'glusterfsd/src') diff --git a/glusterfsd/src/glusterfsd-mgmt.c b/glusterfsd/src/glusterfsd-mgmt.c index f1b2f9e7123..1e9015440ae 100644 --- a/glusterfsd/src/glusterfsd-mgmt.c +++ b/glusterfsd/src/glusterfsd-mgmt.c @@ -919,6 +919,9 @@ glusterfs_handle_attach (rpcsvc_request_t *req) "got attach for %s but no active graph", xlator_req.name); } + if (ret) { + ret = -1; + } glusterfs_translator_info_response_send (req, ret, NULL, NULL); -- cgit