summaryrefslogtreecommitdiffstats
path: root/cli
diff options
context:
space:
mode:
authorshishirng <shishirng@gluster.com>2012-01-18 15:29:15 +0530
committerVijay Bellur <vijay@gluster.com>2012-02-19 01:31:19 -0800
commit7ba1e1ed45cee56ef51b9c04df99c976546d5d04 (patch)
treed3e4121729d51852a120ba5f067aa8a64f39b624 /cli
parent061d70e8195d082043b071118333b7e3173fa3ec (diff)
cluster/dht: Rebalance will be a new glusterfs process
rebalance will not use any maintainance clients. It is replaced by syncops, with the volfile. Brickop (communication between glusterd<->glusterfs process) is used for status and stop commands. Dept-first traversal of dir is maintained, but data is migrated as and when encounterd. fix-layout (dir) do Complete migrate-data of dir fix-layout (subdir) done Rebalance state is saved in the vol file, for restart-ability. A disconnect event and pidfile state determine the defrag-status Signed-off-by: shishirng <shishirng@gluster.com> Change-Id: Iec6c80c84bbb2142d840242c28db3d5f5be94d01 BUG: 763844 Reviewed-on: http://review.gluster.com/2540 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Amar Tumballi <amarts@redhat.com>
Diffstat (limited to 'cli')
-rw-r--r--cli/src/cli-cmd-volume.c30
-rw-r--r--cli/src/cli-rpc-ops.c71
2 files changed, 31 insertions, 70 deletions
diff --git a/cli/src/cli-cmd-volume.c b/cli/src/cli-cmd-volume.c
index 6bea948..6ab1515 100644
--- a/cli/src/cli-cmd-volume.c
+++ b/cli/src/cli-cmd-volume.c
@@ -731,7 +731,7 @@ cli_cmd_volume_defrag_cbk (struct cli_state *state, struct cli_cmd_word *word,
if (!dict)
goto out;
- if (!((wordcount == 4) || (wordcount == 5) || (wordcount == 6))) {
+ if (!((wordcount == 4) || (wordcount == 5))) {
cli_usage_out (word->pattern);
parse_error = 1;
goto out;
@@ -741,7 +741,7 @@ cli_cmd_volume_defrag_cbk (struct cli_state *state, struct cli_cmd_word *word,
index = 3;
} else {
if (strcmp (words[3], "fix-layout") &&
- strcmp (words[3], "migrate-data")) {
+ strcmp (words[3], "start")) {
cli_usage_out (word->pattern);
parse_error = 1;
goto out;
@@ -750,7 +750,7 @@ cli_cmd_volume_defrag_cbk (struct cli_state *state, struct cli_cmd_word *word,
}
if (strcmp (words[index], "start") && strcmp (words[index], "stop") &&
- strcmp (words[index], "status")) {
+ strcmp (words[index], "status") && strcmp (words[index], "force")) {
cli_usage_out (word->pattern);
parse_error = 1;
goto out;
@@ -766,27 +766,19 @@ cli_cmd_volume_defrag_cbk (struct cli_state *state, struct cli_cmd_word *word,
goto out;
}
if (wordcount == 5) {
- ret = dict_set_str (dict, "start-type", (char *)words[3]);
- if (ret)
- goto out;
- ret = dict_set_str (dict, "command", (char *)words[4]);
- if (ret)
- goto out;
- }
-
- /* 'force' option is valid only for the 'migrate-data' key */
- if (wordcount == 6) {
- if (strcmp (words[3], "migrate-data") ||
- strcmp (words[4], "start") ||
- strcmp (words[5], "force")) {
+ if ((strcmp (words[3], "fix-layout") ||
+ strcmp (words[4], "start")) &&
+ (strcmp (words[3], "start") ||
+ strcmp (words[4], "force"))) {
cli_usage_out (word->pattern);
parse_error = 1;
goto out;
}
- ret = dict_set_str (dict, "start-type", "migrate-data-force");
+
+ ret = dict_set_str (dict, "option", (char *)words[4]);
if (ret)
goto out;
- ret = dict_set_str (dict, "command", (char *)words[4]);
+ ret = dict_set_str (dict, "command", (char *)words[3]);
if (ret)
goto out;
}
@@ -1776,7 +1768,7 @@ struct cli_cmd volume_cmds[] = {
cli_cmd_volume_remove_brick_cbk,
"remove brick from volume <VOLNAME>"},
- { "volume rebalance <VOLNAME> [fix-layout|migrate-data] {start|stop|status} [force]",
+ { "volume rebalance <VOLNAME> [fix-layout] {start|stop|status} [force]",
cli_cmd_volume_defrag_cbk,
"rebalance operations"},
diff --git a/cli/src/cli-rpc-ops.c b/cli/src/cli-rpc-ops.c
index 6ed380b..d188841 100644
--- a/cli/src/cli-rpc-ops.c
+++ b/cli/src/cli-rpc-ops.c
@@ -1052,9 +1052,9 @@ gf_cli3_1_defrag_volume_cbk (struct rpc_req *req, struct iovec *iov,
volname);
} else {
snprintf (msg, sizeof (msg),
- "stopped rebalance process of volume %s \n"
- "(after rebalancing %"PRId64" files totaling"
- " %"PRId64" bytes)", volname, files, size);
+ "Stopped rebalance process on volume %s \n"
+ "(after rebalancing %"PRId64" bytes - "
+ "%"PRId64" files)", volname, size, files);
}
goto done;
}
@@ -1065,7 +1065,7 @@ gf_cli3_1_defrag_volume_cbk (struct rpc_req *req, struct iovec *iov,
"%s", rsp.op_errstr);
else
snprintf (msg, sizeof (msg),
- "failed to get the status of "
+ "Failed to get the status of "
"rebalance process");
goto done;
}
@@ -1074,11 +1074,8 @@ gf_cli3_1_defrag_volume_cbk (struct rpc_req *req, struct iovec *iov,
case GF_DEFRAG_STATUS_NOT_STARTED:
status = "not started";
break;
- case GF_DEFRAG_STATUS_LAYOUT_FIX_STARTED:
- status = "step 1: layout fix in progress";
- break;
- case GF_DEFRAG_STATUS_MIGRATE_DATA_STARTED:
- status = "step 2: data migration in progress";
+ case GF_DEFRAG_STATUS_STARTED:
+ status = "in progress";
break;
case GF_DEFRAG_STATUS_STOPPED:
status = "stopped";
@@ -1089,38 +1086,17 @@ gf_cli3_1_defrag_volume_cbk (struct rpc_req *req, struct iovec *iov,
case GF_DEFRAG_STATUS_FAILED:
status = "failed";
break;
- case GF_DEFRAG_STATUS_LAYOUT_FIX_COMPLETE:
- status = "step 1: layout fix complete";
- break;
- case GF_DEFRAG_STATUS_MIGRATE_DATA_COMPLETE:
- status = "step 2: data migration complete";
- break;
- case GF_DEFRAG_STATUS_PAUSED:
- status = "paused";
- break;
}
- if (files && (rsp.op_errno == 1)) {
- snprintf (msg, sizeof (msg),
- "rebalance %s: fixed layout %"PRId64,
- status, files);
- goto done;
- }
- if (files && (rsp.op_errno == 6)) {
- snprintf (msg, sizeof (msg),
- "rebalance %s: fixed layout %"PRId64,
- status, files);
- goto done;
- }
- if (files) {
- snprintf (msg, sizeof (msg),
- "rebalance %s: rebalanced %"PRId64
+ if (files || size || lookup) {
+ snprintf (msg, sizeof(msg),
+ "Rebalance %s: rebalanced %"PRId64
" files of size %"PRId64" (total files"
" scanned %"PRId64")", status,
files, size, lookup);
goto done;
}
- snprintf (msg, sizeof (msg), "rebalance %s", status);
+ snprintf (msg, sizeof (msg), "Rebalance %s", status);
goto done;
}
@@ -1129,7 +1105,7 @@ gf_cli3_1_defrag_volume_cbk (struct rpc_req *req, struct iovec *iov,
snprintf (msg, sizeof (msg), "%s", rsp.op_errstr);
else
snprintf (msg, sizeof (msg),
- "starting rebalance on volume %s has been %s",
+ "Starting rebalance on volume %s has been %s",
volname, (rsp.op_ret) ? "unsuccessful":
"successful");
@@ -1398,24 +1374,18 @@ gf_cli3_remove_brick_status_cbk (struct rpc_req *req, struct iovec *iov,
case GF_DEFRAG_STATUS_NOT_STARTED:
status = "not started";
break;
- case GF_DEFRAG_STATUS_LAYOUT_FIX_STARTED:
- case GF_DEFRAG_STATUS_MIGRATE_DATA_STARTED:
- case GF_DEFRAG_STATUS_LAYOUT_FIX_COMPLETE:
+ case GF_DEFRAG_STATUS_STARTED:
status = "in progress";
break;
case GF_DEFRAG_STATUS_STOPPED:
status = "stopped";
break;
case GF_DEFRAG_STATUS_COMPLETE:
- case GF_DEFRAG_STATUS_MIGRATE_DATA_COMPLETE:
status = "completed";
break;
case GF_DEFRAG_STATUS_FAILED:
status = "failed";
break;
- case GF_DEFRAG_STATUS_PAUSED:
- status = "paused";
- break;
}
if (rsp.dict.dict_len) {
@@ -2479,20 +2449,19 @@ gf_cli3_1_defrag_volume (call_frame_t *frame, xlator_t *this,
if (strcmp (cmd_str, "start") == 0) {
cmd = GF_DEFRAG_CMD_START;
- ret = dict_get_str (dict, "start-type", &cmd_str);
+ ret = dict_get_str (dict, "option", &cmd_str);
if (!ret) {
- if (strcmp (cmd_str, "fix-layout") == 0) {
- cmd = GF_DEFRAG_CMD_START_LAYOUT_FIX;
- }
- if (strcmp (cmd_str, "migrate-data") == 0) {
- cmd = GF_DEFRAG_CMD_START_MIGRATE_DATA;
- }
- if (strcmp (cmd_str, "migrate-data-force") == 0) {
- cmd = GF_DEFRAG_CMD_START_MIGRATE_DATA_FORCE;
+ if (strcmp (cmd_str, "force") == 0) {
+ cmd = GF_DEFRAG_CMD_START_FORCE;
}
}
goto done;
}
+
+ if (strcmp (cmd_str, "fix-layout") == 0) {
+ cmd = GF_DEFRAG_CMD_START_LAYOUT_FIX;
+ goto done;
+ }
if (strcmp (cmd_str, "stop") == 0) {
cmd = GF_DEFRAG_CMD_STOP;
goto done;