]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr: If the requested OSD is down don't trust osd_stat info
authorDavid Zafman <dzafman@redhat.com>
Thu, 18 Apr 2019 02:41:58 +0000 (19:41 -0700)
committerSmith Farm <smithfarm@vanguard2.suse.cz>
Tue, 30 Apr 2019 15:57:41 +0000 (17:57 +0200)
If we have a down AND out OSD it may contains osd_stat with num_pgs == 0.
When all PGs aren't active+clean we need an accurate value or we consider
the osd missing stat info.

Fixes: https://tracker.ceph.com/issues/38930
Signed-off-by: David Zafman <dzafman@redhat.com>
(cherry picked from commit 97f3b7c2e93f72223ae2c9a904e38bbb30e275da)

src/mgr/DaemonServer.cc

index 4b9ee4b301ff592cc54b589437a629c04d0c2f7c..9d5ac54db62d3f029a6104b5cd0711ee12d1d2c5 100644 (file)
@@ -1393,7 +1393,7 @@ bool DaemonServer::_handle_command(
          if (num_active_clean < pg_map.num_pg) {
            // all pgs aren't active+clean; we need to be careful.
            auto p = pg_map.osd_stat.find(osd);
-           if (p == pg_map.osd_stat.end()) {
+           if (p == pg_map.osd_stat.end() || !osdmap.is_up(osd)) {
              missing_stats.insert(osd);
              continue;
            } else if (p->second.num_pgs > 0) {