From 3cb713f2aec3c2191cf8fd2df830b92bf3ad92d4 Mon Sep 17 00:00:00 2001 From: Mohammed Rafi KC Date: Wed, 13 May 2015 20:33:45 +0530 Subject: tier: Do not allow detach-tier commands on a non-tiered volume Change-Id: Ic92d25db68e40ef4a4388ef42affd1b3ee5a7ec6 BUG: 1221270 Signed-off-by: Mohammed Rafi KC Reviewed-on: http://review.gluster.org/10773 Reviewed-by: Atin Mukherjee Reviewed-by: Raghavendra G Reviewed-by: Kaushal M Tested-by: Gluster Build System Tested-by: NetBSD Build System --- xlators/mgmt/glusterd/src/glusterd-brick-ops.c | 18 +++++++++++++++++- xlators/mgmt/glusterd/src/glusterd-rebalance.c | 2 ++ 2 files changed, 19 insertions(+), 1 deletion(-) (limited to 'xlators/mgmt/glusterd') diff --git a/xlators/mgmt/glusterd/src/glusterd-brick-ops.c b/xlators/mgmt/glusterd/src/glusterd-brick-ops.c index f2e7d3a9d3e..0af86f56854 100644 --- a/xlators/mgmt/glusterd/src/glusterd-brick-ops.c +++ b/xlators/mgmt/glusterd/src/glusterd-brick-ops.c @@ -1659,6 +1659,14 @@ glusterd_op_stage_remove_brick (dict_t *dict, char **op_errstr) goto out; case GF_OP_CMD_DETACH_START: + if (volinfo->type != GF_CLUSTER_TYPE_TIER) { + snprintf (msg, sizeof(msg), "volume %s is not a tier " + "volume", volinfo->volname); + errstr = gf_strdup (msg); + gf_log (this->name, GF_LOG_ERROR, "%s", errstr); + goto out; + } + case GF_OP_CMD_START: { if ((volinfo->type == GF_CLUSTER_TYPE_REPLICATE) && @@ -1742,8 +1750,16 @@ glusterd_op_stage_remove_brick (dict_t *dict, char **op_errstr) ret = 0; break; - case GF_OP_CMD_COMMIT: case GF_OP_CMD_DETACH_COMMIT: + if (volinfo->type != GF_CLUSTER_TYPE_TIER) { + snprintf (msg, sizeof(msg), "volume %s is not a tier " + "volume", volinfo->volname); + errstr = gf_strdup (msg); + gf_log (this->name, GF_LOG_ERROR, "%s", errstr); + goto out; + } + + case GF_OP_CMD_COMMIT: if (volinfo->decommission_in_progress) { errstr = gf_strdup ("use 'force' option as migration " "is in progress"); diff --git a/xlators/mgmt/glusterd/src/glusterd-rebalance.c b/xlators/mgmt/glusterd/src/glusterd-rebalance.c index f126e8f0b1f..ac5f139c0b2 100644 --- a/xlators/mgmt/glusterd/src/glusterd-rebalance.c +++ b/xlators/mgmt/glusterd/src/glusterd-rebalance.c @@ -658,6 +658,7 @@ glusterd_op_stage_rebalance (dict_t *dict, char **op_errstr) break; case GF_DEFRAG_CMD_STATUS: case GF_DEFRAG_CMD_STOP: + case GF_DEFRAG_CMD_STOP_DETACH_TIER: ret = dict_get_str (dict, "cmd-str", &cmd_str); if (ret) { gf_log (this->name, GF_LOG_ERROR, "Failed to get " @@ -822,6 +823,7 @@ glusterd_op_rebalance (dict_t *dict, char **op_errstr, dict_t *rsp_dict) cmd, NULL, GD_OP_REBALANCE); break; case GF_DEFRAG_CMD_STOP: + case GF_DEFRAG_CMD_STOP_DETACH_TIER: /* Clear task-id only on explicitly stopping rebalance. * Also clear the stored operation, so it doesn't cause trouble * with future rebalance/remove-brick starts -- cgit