summaryrefslogtreecommitdiffstats
path: root/xlators/cluster/dht/src/tier.c
diff options
context:
space:
mode:
Diffstat (limited to 'xlators/cluster/dht/src/tier.c')
-rw-r--r--xlators/cluster/dht/src/tier.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/xlators/cluster/dht/src/tier.c b/xlators/cluster/dht/src/tier.c
index ce11fa7d7ca..0a74e063824 100644
--- a/xlators/cluster/dht/src/tier.c
+++ b/xlators/cluster/dht/src/tier.c
@@ -332,6 +332,17 @@ exit:
return ret;
}
+
+static gf_boolean_t
+is_hot_tier_full (gf_tier_conf_t *tier_conf)
+{
+ if (tier_conf && (tier_conf->mode == TIER_MODE_WM) &&
+ (tier_conf->watermark_last == TIER_WM_HI))
+ return _gf_true;
+
+ return _gf_false;
+}
+
int
tier_do_migration (xlator_t *this, int promote, loc_t *root_loc)
{
@@ -448,6 +459,7 @@ tier_migrate_using_query_file (void *_args)
int total_time = 0;
int max_time = 0;
+
GF_VALIDATE_OR_GOTO ("tier", query_cbk_args, out);
GF_VALIDATE_OR_GOTO ("tier", query_cbk_args->this, out);
this = query_cbk_args->this;
@@ -458,7 +470,6 @@ tier_migrate_using_query_file (void *_args)
conf = this->private;
defrag = query_cbk_args->defrag;
-
migrate_data = dict_new ();
if (!migrate_data)
goto out;
@@ -542,7 +553,7 @@ tier_migrate_using_query_file (void *_args)
* a chance to start if not already running*/
if (query_cbk_args->is_promotion &&
- defrag->tier_conf.mode == TIER_WM_HI) {
+ is_hot_tier_full (&defrag->tier_conf)) {
gf_msg (this->name, GF_LOG_INFO, 0,
DHT_MSG_LOG_TIER_STATUS,
@@ -554,7 +565,6 @@ tier_migrate_using_query_file (void *_args)
continue;
}
-
if (!list_empty (&query_record->link_list)) {
per_file_status =
dict_set_str (migrate_data,
@@ -1614,6 +1624,8 @@ tier_check_promote (gf_tier_conf_t *tier_conf,
}
+
+
void
clear_bricklist (struct list_head *brick_list)
{