]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: fix premature stop of MDBalancer::try_rebalance() 23884/head
authorYan, Zheng <zyan@redhat.com>
Fri, 3 Aug 2018 10:43:41 +0000 (18:43 +0800)
committerYan, Zheng <zyan@redhat.com>
Wed, 19 Sep 2018 01:33:09 +0000 (09:33 +0800)
When mds wants to export loads to multiple targets. The amount of single
export can easily be less than (0.2 * target_loads). For example:

6 active mds, mds.0's load is 11, other ranks' loads are 5. target_load
is 6. Export amount for each target is 1.

Fixes: http://tracker.ceph.com/issues/26973
Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
(cherry picked from commit e68cbec6a647f0252d848620ce6e51b4f3eea1e3)

src/mds/MDBalancer.cc

index 9cfc539aa1c8f51e426fc0118820af79edca96d7..c3d56bff9d3dc718211391a5c4836d7f5abcd773 100644 (file)
@@ -874,10 +874,10 @@ void MDBalancer::try_rebalance(balance_state_t& state)
     mds_rank_t target = it.first;
     double amount = it.second;
 
-    if (amount / target_load < .2)
-      continue;
     if (amount < MIN_OFFLOAD)
       continue;
+    if (amount * 10 * state.targets.size() < target_load)
+      continue;
 
     dout(5) << "want to send " << amount << " to mds." << target
       //<< " .. " << (*it).second << " * " << load_fac