From 42dbc4f2f0e8522c6e5b822adeafadf496c92189 Mon Sep 17 00:00:00 2001 From: xie xingguo Date: Fri, 20 Dec 2019 16:26:44 +0800 Subject: [PATCH] osd/OSDMap: consider overfull osds only when trying to do upmap By definition, we should only upmap pgs from overfull osds to underfull osds. Hence we could make a safe exit if we start to hit underfull osds when searching a target osd for upmapping. Signed-off-by: xie xingguo --- src/osd/OSDMap.cc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/osd/OSDMap.cc b/src/osd/OSDMap.cc index 68788240a2f..a9e72507327 100644 --- a/src/osd/OSDMap.cc +++ b/src/osd/OSDMap.cc @@ -4683,6 +4683,12 @@ int OSDMap::calc_pg_upmaps( } int osd = p->second; float deviation = p->first; + if (deviation < 0) { + ldout(cct, 10) << " hitting underfull osds now" + << " when trying to remap overfull osds" + << dendl; + break; + } float target = osd_weight[osd] * pgs_per_weight; ldout(cct, 10) << " Overfull search osd." << osd << " target " << target -- 2.39.5