]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: fix premature stop of MDBalancer::try_rebalance() 23883/head
authorYan, Zheng <zyan@redhat.com>
Fri, 3 Aug 2018 10:43:41 +0000 (18:43 +0800)
committerNathan Cutler <ncutler@suse.com>
Sun, 2 Sep 2018 16:52:03 +0000 (18:52 +0200)
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 5f4b18bd8804f9cdce64d83e967e054675f018e9..b6d649151ba34a18625d0b32950c77af15efb409 100644 (file)
@@ -858,10 +858,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