From: Sage Weil Date: Tue, 19 Sep 2017 22:25:56 +0000 (-0400) Subject: osd/OSDMap: ignore xinfo if features == 0 X-Git-Tag: v13.0.1~803^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=8399833f3d221364a8ededb97cd4e1c5a258d924;p=ceph.git osd/OSDMap: ignore xinfo if features == 0 Some old bug (e.g., http://tracker.ceph.com/issues/20751) could result in an UP+EXISTS osd having features==0. If that happens, we shouldn't crash the mon, which (reasonably) does if (osdmap.get_epoch()) { if (osdmap.get_num_up_osds() > 0) { assert(osdmap.get_up_osd_features() & CEPH_FEATURE_MON_STATEFUL_SUB); check_subs(); } } Signed-off-by: Sage Weil --- diff --git a/src/osd/OSDMap.cc b/src/osd/OSDMap.cc index 7986b35e130a..e20bd469f19c 100644 --- a/src/osd/OSDMap.cc +++ b/src/osd/OSDMap.cc @@ -1414,6 +1414,8 @@ void OSDMap::_calc_up_osd_features() if (!is_up(osd)) continue; const osd_xinfo_t &xi = get_xinfo(osd); + if (xi.features == 0) + continue; // bogus xinfo, maybe #20751 or similar, skipping if (first) { cached_up_osd_features = xi.features; first = false;