summaryrefslogtreecommitdiffstats
path: root/xlators/mgmt/glusterd/src/glusterd-handler.c
diff options
context:
space:
mode:
authorMohammed Rafi KC <rkavunga@redhat.com>2018-11-15 13:18:36 +0530
committerAtin Mukherjee <amukherj@redhat.com>2018-11-18 06:10:31 +0000
commitb4faa9e7a25bdf0582f8b0fd69aa1381c307a61e (patch)
tree4a9d8dfb21695447764c432a731dabcf594f460b /xlators/mgmt/glusterd/src/glusterd-handler.c
parentc2e758b54d8a3f778e3e63db0000bb8b63de9b25 (diff)
glusterd/mux: Optimize brick disconnect handler code
Removed unnecessary iteration during brick disconnect handler when multiplex is enabled. Change-Id: I62dd3337b7e7da085da5d76aaae206e0b0edff9f fixes: bz#1650115 Signed-off-by: Mohammed Rafi KC <rkavunga@redhat.com>
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-handler.c')
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-handler.c77
1 files changed, 14 insertions, 63 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-handler.c b/xlators/mgmt/glusterd/src/glusterd-handler.c
index 1d81d99df1b..ef1df3c3788 100644
--- a/xlators/mgmt/glusterd/src/glusterd-handler.c
+++ b/xlators/mgmt/glusterd/src/glusterd-handler.c
@@ -6061,43 +6061,6 @@ out:
static int gd_stale_rpc_disconnect_log;
-static int
-glusterd_mark_bricks_stopped_by_proc(glusterd_brick_proc_t *brick_proc)
-{
- glusterd_brickinfo_t *brickinfo = NULL;
- glusterd_brickinfo_t *brickinfo_tmp = NULL;
- glusterd_volinfo_t *volinfo = NULL;
- int ret = -1;
-
- cds_list_for_each_entry(brickinfo, &brick_proc->bricks, brick_list)
- {
- ret = glusterd_get_volinfo_from_brick(brickinfo->path, &volinfo);
- if (ret) {
- gf_msg(THIS->name, GF_LOG_ERROR, 0, GD_MSG_VOLINFO_GET_FAIL,
- "Failed to get volinfo"
- " from brick(%s)",
- brickinfo->path);
- goto out;
- }
- cds_list_for_each_entry(brickinfo_tmp, &volinfo->bricks, brick_list)
- {
- if (strcmp(brickinfo->path, brickinfo_tmp->path) == 0) {
- glusterd_set_brick_status(brickinfo_tmp, GF_BRICK_STOPPED);
- brickinfo_tmp->start_triggered = _gf_false;
- /* When bricks are stopped, ports also need to
- * be cleaned up
- */
- pmap_registry_remove(THIS, brickinfo_tmp->port,
- brickinfo_tmp->path,
- GF_PMAP_PORT_BRICKSERVER, NULL, _gf_true);
- }
- }
- }
- return 0;
-out:
- return ret;
-}
-
int
__glusterd_brick_rpc_notify(struct rpc_clnt *rpc, void *mydata,
rpc_clnt_event_t event, void *data)
@@ -6108,7 +6071,6 @@ __glusterd_brick_rpc_notify(struct rpc_clnt *rpc, void *mydata,
glusterd_brickinfo_t *brickinfo = NULL;
glusterd_volinfo_t *volinfo = NULL;
xlator_t *this = NULL;
- int brick_proc_found = 0;
int32_t pid = -1;
glusterd_brickinfo_t *brickinfo_tmp = NULL;
glusterd_brick_proc_t *brick_proc = NULL;
@@ -6236,32 +6198,21 @@ __glusterd_brick_rpc_notify(struct rpc_clnt *rpc, void *mydata,
if (brickpath)
GF_FREE(brickpath);
- if (is_brick_mx_enabled()) {
- cds_list_for_each_entry(brick_proc, &conf->brick_procs,
- brick_proc_list)
+ if (is_brick_mx_enabled() && glusterd_is_brick_started(brickinfo)) {
+ brick_proc = brickinfo->brick_proc;
+ if (!brick_proc)
+ break;
+ cds_list_for_each_entry(brickinfo_tmp, &brick_proc->bricks,
+ mux_bricks)
{
- cds_list_for_each_entry(brickinfo_tmp, &brick_proc->bricks,
- brick_list)
- {
- if (strcmp(brickinfo_tmp->path, brickinfo->path) == 0) {
- ret = glusterd_mark_bricks_stopped_by_proc(
- brick_proc);
- if (ret) {
- gf_msg(THIS->name, GF_LOG_ERROR, 0,
- GD_MSG_BRICK_STOP_FAIL,
- "Unable to stop "
- "bricks of process"
- " to which brick(%s)"
- " belongs",
- brickinfo->path);
- goto out;
- }
- brick_proc_found = 1;
- break;
- }
- }
- if (brick_proc_found == 1)
- break;
+ glusterd_set_brick_status(brickinfo_tmp, GF_BRICK_STOPPED);
+ brickinfo_tmp->start_triggered = _gf_false;
+ /* When bricks are stopped, ports also need to
+ * be cleaned up
+ */
+ pmap_registry_remove(
+ THIS, brickinfo_tmp->port, brickinfo_tmp->path,
+ GF_PMAP_PORT_BRICKSERVER, NULL, _gf_true);
}
} else {
glusterd_set_brick_status(brickinfo, GF_BRICK_STOPPED);