From 572f5f0a85c97a4f90a33be87b96368a0d7e7a8e Mon Sep 17 00:00:00 2001 From: Kaushal M Date: Wed, 10 Jul 2013 18:10:49 +0530 Subject: cli,glusterd: Fix when tasks are shown in 'volume status' Asynchronous tasks are shown in 'volume status' only for a normal volume status request for either all volumes or a single volume. Change-Id: I9d47101511776a179d213598782ca0bbdf32b8c2 BUG: 888752 Signed-off-by: Kaushal M Reviewed-on: http://review.gluster.org/5308 Reviewed-by: Amar Tumballi Tested-by: Gluster Build System Reviewed-by: Anand Avati --- cli/src/cli-xml-output.c | 6 +++++- tests/bugs/bug-888752.t | 24 ++++++++++++++++++++++++ xlators/mgmt/glusterd/src/glusterd-op-sm.c | 4 ++++ 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 tests/bugs/bug-888752.t diff --git a/cli/src/cli-xml-output.c b/cli/src/cli-xml-output.c index a2bd2b14..68027055 100644 --- a/cli/src/cli-xml-output.c +++ b/cli/src/cli-xml-output.c @@ -1578,7 +1578,11 @@ cli_xml_output_vol_status (cli_local_t *local, dict_t *dict) XML_RET_CHECK_AND_GOTO (ret, out); } - if ((cmd & GF_CLI_STATUS_MASK) == GF_CLI_STATUS_NONE) { + /* Tasks are only present when a normal volume status call is done on a + * single volume or on all volumes + */ + if (((cmd & GF_CLI_STATUS_MASK) == GF_CLI_STATUS_NONE) && + (cmd & (GF_CLI_STATUS_VOL|GF_CLI_STATUS_ALL))) { ret = cli_xml_output_vol_status_tasks (local, dict); if (ret) goto out; diff --git a/tests/bugs/bug-888752.t b/tests/bugs/bug-888752.t new file mode 100644 index 00000000..56d3f9ff --- /dev/null +++ b/tests/bugs/bug-888752.t @@ -0,0 +1,24 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc +. $(dirname $0)/../cluster.rc + +# Check if xml output is generated correctly for volume status for a single brick +# present on another peer and no async tasks are running. + +function get_peer_count { + $CLI_1 peer status | grep 'Peer in Cluster (Connected)' | wc -l +} +cleanup + +TEST launch_cluster 2; +TEST $CLI_1 peer probe $H2; +EXPECT_WITHIN 5 1 get_peer_count +TEST $CLI_1 volume create $V0 $H1:$B1/$V0 $H2:$B2/$V0 +TEST $CLI_1 volume start $V0 + +TEST $CLI_1 volume status $V0 $H2:$B2/$V0 --xml + +TEST $CLI_1 volume stop $V0 + +cleanup diff --git a/xlators/mgmt/glusterd/src/glusterd-op-sm.c b/xlators/mgmt/glusterd/src/glusterd-op-sm.c index ca31bf0d..f1e1e065 100644 --- a/xlators/mgmt/glusterd/src/glusterd-op-sm.c +++ b/xlators/mgmt/glusterd/src/glusterd-op-sm.c @@ -2149,7 +2149,11 @@ glusterd_op_status_volume (dict_t *dict, char **op_errstr, } /* Active tasks */ + /* Tasks are added only for normal volume status request for either a + * single volume or all volumes, and only by the origin glusterd + */ if (((cmd & GF_CLI_STATUS_MASK) != GF_CLI_STATUS_NONE) || + !(cmd & (GF_CLI_STATUS_VOL | GF_CLI_STATUS_ALL)) || !origin_glusterd) goto out; -- cgit