summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--xlators/cluster/dht/src/dht-rebalance.c29
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-rebalance.c48
2 files changed, 36 insertions, 41 deletions
diff --git a/xlators/cluster/dht/src/dht-rebalance.c b/xlators/cluster/dht/src/dht-rebalance.c
index b3787f5cbe7..bcc9fd6aec3 100644
--- a/xlators/cluster/dht/src/dht-rebalance.c
+++ b/xlators/cluster/dht/src/dht-rebalance.c
@@ -1480,6 +1480,12 @@ gf_defrag_start_crawl (void *data)
}
ret = gf_defrag_fix_layout (this, defrag, &loc, fix_layout,
migrate_data);
+ if ((defrag->defrag_status != GF_DEFRAG_STATUS_STOPPED) &&
+ (defrag->defrag_status != GF_DEFRAG_STATUS_FAILED)) {
+ defrag->defrag_status = GF_DEFRAG_STATUS_COMPLETE;
+ }
+
+
out:
LOCK (&defrag->lock);
@@ -1557,6 +1563,7 @@ gf_defrag_status_get (gf_defrag_info_t *defrag, dict_t *dict)
uint64_t size = 0;
uint64_t lookup = 0;
uint64_t failures = 0;
+ char *status = "";
if (!defrag)
goto out;
@@ -1595,6 +1602,25 @@ gf_defrag_status_get (gf_defrag_info_t *defrag, dict_t *dict)
ret = dict_set_uint64 (dict, "failures", failures);
log:
+ switch (defrag->defrag_status) {
+ case GF_DEFRAG_STATUS_NOT_STARTED:
+ status = "not started";
+ break;
+ case GF_DEFRAG_STATUS_STARTED:
+ status = "in progress";
+ break;
+ case GF_DEFRAG_STATUS_STOPPED:
+ status = "stopped";
+ break;
+ case GF_DEFRAG_STATUS_COMPLETE:
+ status = "completed";
+ break;
+ case GF_DEFRAG_STATUS_FAILED:
+ status = "failed";
+ break;
+ }
+
+ gf_log (THIS->name, GF_LOG_INFO, "Rebalance is %s", status);
gf_log (THIS->name, GF_LOG_INFO, "Files migrated: %"PRIu64", size: %"
PRIu64", lookups: %"PRIu64", failures: %"PRIu64, files, size,
lookup, failures);
@@ -1616,12 +1642,13 @@ gf_defrag_stop (gf_defrag_info_t *defrag, dict_t *output)
goto out;
}
+ gf_log ("", GF_LOG_INFO, "Recieved stop command on rebalance");
defrag->defrag_status = GF_DEFRAG_STATUS_STOPPED;
if (output)
gf_defrag_status_get (defrag, output);
ret = 0;
out:
- gf_log ("glusterd", GF_LOG_DEBUG, "Returning %d", ret);
+ gf_log ("", GF_LOG_DEBUG, "Returning %d", ret);
return ret;
}
diff --git a/xlators/mgmt/glusterd/src/glusterd-rebalance.c b/xlators/mgmt/glusterd/src/glusterd-rebalance.c
index 9ed6af66741..7e35f06dd12 100644
--- a/xlators/mgmt/glusterd/src/glusterd-rebalance.c
+++ b/xlators/mgmt/glusterd/src/glusterd-rebalance.c
@@ -51,38 +51,6 @@ int32_t
glusterd3_1_brick_op_cbk (struct rpc_req *req, struct iovec *iov,
int count, void *myframe);
-int
-glusterd_defrag_update_state (glusterd_volinfo_t *volinfo,
- glusterd_defrag_info_t *defrag)
-{
- int ret = -1;
- int cmd = 0;
-
- GF_ASSERT (volinfo);
- GF_ASSERT (defrag);
-
- if (volinfo->defrag_status == GF_DEFRAG_STATUS_NOT_STARTED) {
- goto out;
- }
-
- LOCK (&defrag->lock);
- {
- cmd = defrag->cmd;
- if ((cmd == GF_DEFRAG_CMD_START) || (cmd ==
- GF_DEFRAG_CMD_START_FORCE) || (cmd ==
- GF_DEFRAG_CMD_START_LAYOUT_FIX))
- volinfo->defrag_status = GF_DEFRAG_STATUS_COMPLETE;
- else if (cmd == GF_DEFRAG_CMD_STOP)
- volinfo->defrag_status = GF_DEFRAG_STATUS_STOPPED;
- }
- UNLOCK (&defrag->lock);
-
- ret = 0;
-out:
- gf_log ("glusterd", GF_LOG_DEBUG, "Returning %d", ret);
- return ret;
-}
-
void
glusterd_rebalance_cmd_attempted_log (int cmd, char *volname)
{
@@ -213,14 +181,14 @@ glusterd_defrag_notify (struct rpc_clnt *rpc, void *mydata,
UNLOCK (&defrag->lock);
if (!glusterd_is_service_running (pidfile, NULL)) {
- glusterd_defrag_update_state (volinfo, defrag);
- } else {
- volinfo->defrag_status = GF_DEFRAG_STATUS_FAILED;
- }
-
- /* Success or failure, Reset cmd in volinfo */
-
- volinfo->defrag_cmd = 0;
+ if (volinfo->defrag_status ==
+ GF_DEFRAG_STATUS_STARTED) {
+ volinfo->defrag_status =
+ GF_DEFRAG_STATUS_FAILED;
+ } else {
+ volinfo->defrag_cmd = 0;
+ }
+ }
glusterd_store_volinfo (volinfo,
GLUSTERD_VOLINFO_VER_AC_INCREMENT);