From be26b0da2f1a7fe336400de6a1c016716983bd38 Mon Sep 17 00:00:00 2001 From: hari gowtham Date: Wed, 11 Apr 2018 17:38:26 +0530 Subject: glusterd: volume inode/fd status broken with brick mux Problem: The values for inode/fd was populated from the ctx received from the server xlator. Without brickmux, every brick from a volume belonged to a single brick from the volume. So searching the server and populating it worked. With brickmux, a number of bricks can be confined to a single process. These bricks can be from different volumes too (if we use the max-bricks-per-process option). If they are from different volumes, using the server xlator to populate causes problem. Fix: Use the brick to validate and populate the inode/fd status. Signed-off-by: hari gowtham Change-Id: I2543fa5397ea095f8338b518460037bba3dfdbfd fixes: bz#1566067 --- xlators/mgmt/glusterd/src/glusterd-handler.c | 4 ++++ xlators/mgmt/glusterd/src/glusterd-op-sm.c | 3 +++ 2 files changed, 7 insertions(+) (limited to 'xlators/mgmt') diff --git a/xlators/mgmt/glusterd/src/glusterd-handler.c b/xlators/mgmt/glusterd/src/glusterd-handler.c index 049c90e9cd3..ac976c2195b 100644 --- a/xlators/mgmt/glusterd/src/glusterd-handler.c +++ b/xlators/mgmt/glusterd/src/glusterd-handler.c @@ -5243,6 +5243,10 @@ glusterd_print_client_details (FILE *fp, dict_t *dict, brick_req->op = GLUSTERD_BRICK_STATUS; brick_req->name = ""; + ret = dict_set_str (dict, "brick-name", brickinfo->path); + if (ret) + goto out; + ret = dict_set_int32 (dict, "cmd", GF_CLI_STATUS_CLIENTS); if (ret) goto out; diff --git a/xlators/mgmt/glusterd/src/glusterd-op-sm.c b/xlators/mgmt/glusterd/src/glusterd-op-sm.c index ffb6ae9c209..64855cd60fa 100644 --- a/xlators/mgmt/glusterd/src/glusterd-op-sm.c +++ b/xlators/mgmt/glusterd/src/glusterd-op-sm.c @@ -615,6 +615,9 @@ glusterd_brick_op_build_payload (glusterd_op_t op, glusterd_brickinfo_t *brickin goto out; brick_req->op = GLUSTERD_BRICK_STATUS; brick_req->name = ""; + ret = dict_set_str (dict, "brick-name", brickinfo->path); + if (ret) + goto out; } break; case GD_OP_REBALANCE: -- cgit