From 85bffa307d8d4d955330d3f7796d676ffd4b40bc Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Sun, 20 Jul 2014 13:41:15 -0700 Subject: [PATCH] mds: use lock safe OSDMap accessors for TMAP2OMAP check Signed-off-by: Sage Weil --- src/mds/MDS.cc | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/mds/MDS.cc b/src/mds/MDS.cc index 8245db4cd0f..85b0a27739d 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); } -- 2.47.3