]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: calc_pg_upmaps() pick most overfull remap from try_pg_upmap()
authorDavid Zafman <dzafman@redhat.com>
Tue, 26 Nov 2019 05:38:16 +0000 (21:38 -0800)
committerDavid Zafman <dzafman@redhat.com>
Wed, 15 Jan 2020 21:10:37 +0000 (21:10 +0000)
Signed-off-by: David Zafman <dzafman@redhat.com>
(cherry picked from commit 3f132061fd33c82dc131e18ae80cbec067b53cae)

src/osd/OSDMap.cc

index 1441832117c8bb690a5afc20426d299c6dc63a51..5030b0fd33c1bd65c0749186262c862139b74900 100644 (file)
@@ -4701,13 +4701,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]);