From: Sage Weil Date: Sun, 20 Jul 2014 20:41:15 +0000 (-0700) Subject: mds: use lock safe OSDMap accessors for TMAP2OMAP check X-Git-Tag: v0.86~213^2~70 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=85bffa307d8d4d955330d3f7796d676ffd4b40bc;p=ceph.git mds: use lock safe OSDMap accessors for TMAP2OMAP check Signed-off-by: Sage Weil --- diff --git a/src/mds/MDS.cc b/src/mds/MDS.cc index 8245db4cd0f6..85b0a27739d7 100644 --- a/src/mds/MDS.cc +++ b/src/mds/MDS.cc @@ -638,14 +638,18 @@ int MDS::init(MDSMap::DaemonState wanted_state) while (true) { objecter->maybe_request_map(); objecter->wait_for_osd_map(); - uint64_t osd_features = objecter->osdmap->get_up_osd_features(); - if (osd_features & CEPH_FEATURE_OSD_TMAP2OMAP) + const OSDMap *osdmap = objecter->get_osdmap_read(); + uint64_t osd_features = osdmap->get_up_osd_features(); + if (osd_features & CEPH_FEATURE_OSD_TMAP2OMAP) { + objecter->put_osdmap_read(); break; - if (objecter->osdmap->get_num_up_osds() > 0) { + } + if (osdmap->get_num_up_osds() > 0) { derr << "*** one or more OSDs do not support TMAP2OMAP; upgrade OSDs before starting MDS (or downgrade MDS) ***" << dendl; } else { - derr << "*** no OSDs are up as of epoch " << objecter->osdmap->get_epoch() << ", waiting" << dendl; + derr << "*** no OSDs are up as of epoch " << osdmap->get_epoch() << ", waiting" << dendl; } + objecter->put_osdmap_read(); sleep(10); }