From: xie xingguo Date: Fri, 20 Dec 2019 08:26:44 +0000 (+0800) Subject: osd/OSDMap: consider overfull osds only when trying to do upmap X-Git-Tag: v15.1.0~394^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F32368%2Fhead;p=ceph.git 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 --- diff --git a/src/osd/OSDMap.cc b/src/osd/OSDMap.cc index 68788240a2f0..a9e72507327a 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