From: David Zafman Date: Tue, 26 Nov 2019 05:38:16 +0000 (-0800) Subject: osd: calc_pg_upmaps() pick most overfull remap from try_pg_upmap() X-Git-Tag: v12.2.13~18^2~9 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=b843b0a359bfe11f5d506fe22c6f98ff6c45d9c2;p=ceph.git osd: calc_pg_upmaps() pick most overfull remap from try_pg_upmap() Signed-off-by: David Zafman (cherry picked from commit 3f132061fd33c82dc131e18ae80cbec067b53cae) --- diff --git a/src/osd/OSDMap.cc b/src/osd/OSDMap.cc index 5d32958556358..858b099e9be04 100644 --- a/src/osd/OSDMap.cc +++ b/src/osd/OSDMap.cc @@ -4262,13 +4262,24 @@ int OSDMap::calc_pg_upmaps( continue; } ceph_assert(orig != out); + int pos = -1; + float max_dev = 0; for (unsigned i = 0; i < out.size(); ++i) { if (orig[i] == out[i]) continue; // skip invalid remappings if (existing.count(orig[i]) || existing.count(out[i])) continue; // we want new remappings only! + if (osd_deviation[orig[i]] > max_dev) { + max_dev = osd_deviation[orig[i]]; + pos = i; + ldout(cct, 30) << "Max osd." << orig[i] << " pos " << i << " dev " << osd_deviation[orig[i]] << dendl; + } + } + if (pos != -1) { + int i = pos; ldout(cct, 10) << " will try adding new remapping pair " << orig[i] << " -> " << out[i] << " for " << pg + << (orig[i] != osd ? " NOT selected osd" : "") << dendl; existing.insert(orig[i]); existing.insert(out[i]);