From b19a7fee17ddedfc6692deb5a8dc8df927a2cf7b Mon Sep 17 00:00:00 2001 From: shishir gowda Date: Thu, 12 Apr 2012 15:32:05 +0530 Subject: dht/rebalance: Display migration failure count Change-Id: Ib2f8be2c98eae1b4df5d2090c1f1eec8ab264a35 BUG: 811923 Signed-off-by: shishir gowda Reviewed-on: http://review.gluster.com/3135 Tested-by: Gluster Build System Reviewed-by: Amar Tumballi Reviewed-by: Vijay Bellur --- xlators/cluster/dht/src/dht-common.h | 1 + xlators/cluster/dht/src/dht-rebalance.c | 11 +++++++++-- xlators/mgmt/glusterd/src/glusterd-op-sm.c | 15 +++++++++++++++ xlators/mgmt/glusterd/src/glusterd-rebalance.c | 1 + xlators/mgmt/glusterd/src/glusterd-rpc-ops.c | 14 ++++++++++++++ xlators/mgmt/glusterd/src/glusterd.h | 2 ++ 6 files changed, 42 insertions(+), 2 deletions(-) (limited to 'xlators') diff --git a/xlators/cluster/dht/src/dht-common.h b/xlators/cluster/dht/src/dht-common.h index 61687aacc..cf7b93c1e 100644 --- a/xlators/cluster/dht/src/dht-common.h +++ b/xlators/cluster/dht/src/dht-common.h @@ -204,6 +204,7 @@ struct gf_defrag_info_ { uint64_t total_files; uint64_t total_data; uint64_t num_files_lookedup; + uint64_t total_failures; gf_lock_t lock; int cmd; pthread_t th; diff --git a/xlators/cluster/dht/src/dht-rebalance.c b/xlators/cluster/dht/src/dht-rebalance.c index 5e46a80a1..819ec1dae 100644 --- a/xlators/cluster/dht/src/dht-rebalance.c +++ b/xlators/cluster/dht/src/dht-rebalance.c @@ -1202,9 +1202,11 @@ gf_defrag_migrate_data (xlator_t *this, gf_defrag_info_t *defrag, loc_t *loc, ret = syncop_setxattr (this, &entry_loc, migrate_data, 0); - if (ret) + if (ret) { gf_log (this->name, GF_LOG_ERROR, "migrate-data" " failed for %s", entry_loc.path); + defrag->total_failures +=1; + } if (ret == -1) { op_errno = errno; @@ -1548,6 +1550,7 @@ gf_defrag_status_get (gf_defrag_info_t *defrag, dict_t *dict) uint64_t files = 0; uint64_t size = 0; uint64_t lookup = 0; + uint64_t failures = 0; if (!defrag) goto out; @@ -1559,6 +1562,7 @@ gf_defrag_status_get (gf_defrag_info_t *defrag, dict_t *dict) files = defrag->total_files; size = defrag->total_data; lookup = defrag->num_files_lookedup; + failures = defrag->total_failures; if (!dict) goto log; @@ -1582,9 +1586,12 @@ gf_defrag_status_get (gf_defrag_info_t *defrag, dict_t *dict) if (ret) gf_log (THIS->name, GF_LOG_WARNING, "failed to set status"); + + ret = dict_set_uint64 (dict, "failures", failures); log: gf_log (THIS->name, GF_LOG_INFO, "Files migrated: %"PRIu64", size: %" - PRIu64", lookups: %"PRIu64, files, size, lookup); + PRIu64", lookups: %"PRIu64", failures: %"PRIu64, files, size, + lookup, failures); out: diff --git a/xlators/mgmt/glusterd/src/glusterd-op-sm.c b/xlators/mgmt/glusterd/src/glusterd-op-sm.c index 1825065a4..6d646c111 100644 --- a/xlators/mgmt/glusterd/src/glusterd-op-sm.c +++ b/xlators/mgmt/glusterd/src/glusterd-op-sm.c @@ -3187,6 +3187,7 @@ glusterd_defrag_volume_node_rsp (dict_t *req_dict, dict_t *rsp_dict, char buf[1024] = {0,}; char *node_str = NULL; glusterd_conf_t *priv = NULL; + uint64_t failures = 0; priv = THIS->private; GF_ASSERT (req_dict); @@ -3224,12 +3225,19 @@ glusterd_defrag_volume_node_rsp (dict_t *req_dict, dict_t *rsp_dict, gf_log (THIS->name, GF_LOG_TRACE, "failed to get status"); + ret = dict_get_uint64 (rsp_dict, "failures", &failures); + if (ret) + gf_log (THIS->name, GF_LOG_TRACE, + "failed to get failure count"); + if (files) volinfo->rebalance_files = files; if (size) volinfo->rebalance_data = size; if (lookup) volinfo->lookedup_files = lookup; + if (failures) + volinfo->rebalance_failures = failures; if (!op_ctx) { dict_copy (rsp_dict, op_ctx); @@ -3283,6 +3291,13 @@ populate: gf_log (THIS->name, GF_LOG_ERROR, "failed to set status"); + memset (key, 0 , 256); + snprintf (key, 256, "failures-%d", i); + ret = dict_set_uint64 (op_ctx, key, volinfo->rebalance_failures); + if (ret) + gf_log (THIS->name, GF_LOG_ERROR, + "failed to set failure count"); + out: return ret; } diff --git a/xlators/mgmt/glusterd/src/glusterd-rebalance.c b/xlators/mgmt/glusterd/src/glusterd-rebalance.c index e3c4c4741..fddf6699f 100644 --- a/xlators/mgmt/glusterd/src/glusterd-rebalance.c +++ b/xlators/mgmt/glusterd/src/glusterd-rebalance.c @@ -290,6 +290,7 @@ glusterd_handle_defrag_start (glusterd_volinfo_t *volinfo, char *op_errstr, volinfo->rebalance_files = 0; volinfo->rebalance_data = 0; volinfo->lookedup_files = 0; + volinfo->rebalance_failures = 0; volinfo->defrag_cmd = cmd; glusterd_store_volinfo (volinfo, GLUSTERD_VOLINFO_VER_AC_INCREMENT); diff --git a/xlators/mgmt/glusterd/src/glusterd-rpc-ops.c b/xlators/mgmt/glusterd/src/glusterd-rpc-ops.c index 14bcf8b99..ddc4d1f49 100644 --- a/xlators/mgmt/glusterd/src/glusterd-rpc-ops.c +++ b/xlators/mgmt/glusterd/src/glusterd-rpc-ops.c @@ -1208,6 +1208,20 @@ glusterd_volume_rebalance_use_rsp_dict (dict_t *rsp_dict) "failed to set node-uuid"); } } + + memset (key, 0, 256); + snprintf (key, 256, "failures-%d", index); + ret = dict_get_uint64 (rsp_dict, key, &value); + if (!ret) { + memset (key, 0, 256); + snprintf (key, 256, "failures-%d", i); + ret = dict_set_uint64 (ctx_dict, key, value); + if (ret) { + gf_log (THIS->name, GF_LOG_DEBUG, + "failed to set failure count"); + } + } + ret = 0; out: diff --git a/xlators/mgmt/glusterd/src/glusterd.h b/xlators/mgmt/glusterd/src/glusterd.h index 8169562d7..1b958d105 100644 --- a/xlators/mgmt/glusterd/src/glusterd.h +++ b/xlators/mgmt/glusterd/src/glusterd.h @@ -166,6 +166,7 @@ struct glusterd_defrag_info_ { uint64_t total_files; uint64_t total_data; uint64_t num_files_lookedup; + uint64_t total_failures; gf_lock_t lock; int cmd; pthread_t th; @@ -226,6 +227,7 @@ struct glusterd_volinfo_ { uint64_t lookedup_files; glusterd_defrag_info_t *defrag; gf_cli_defrag_type defrag_cmd; + uint64_t rebalance_failures; /* Replace brick status */ gf_rb_status_t rb_status; -- cgit