diff options
author | Mohammed Rafi KC <rkavunga@redhat.com> | 2018-11-15 13:18:36 +0530 |
---|---|---|
committer | Atin Mukherjee <amukherj@redhat.com> | 2018-11-18 06:10:31 +0000 |
commit | b4faa9e7a25bdf0582f8b0fd69aa1381c307a61e (patch) | |
tree | 4a9d8dfb21695447764c432a731dabcf594f460b /xlators/mgmt/glusterd/src/glusterd-handler.c | |
parent | c2e758b54d8a3f778e3e63db0000bb8b63de9b25 (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.c | 77 |
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); |