From 82b3b5f3f10cc86cc76d47269893db5e29b3a778 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 24 Apr 2018 13:02:14 -0500 Subject: [PATCH] osd: publish osdmap to OSDService before starting wq threads The worker threads may request the map from the service (notably, advance_pg() does this). Fixes: http://tracker.ceph.com/issues/21977 Signed-off-by: Sage Weil (cherry picked from commit ef3e5b1069c81f4e5b64e6119b467aeb7193e0b7) Conflicts: src/osd/OSD.cc: Resolved in OSD::init --- src/osd/OSD.cc | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 2579e7fdc4b04..54ddcb81b3191 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -2660,6 +2660,12 @@ int OSD::init() update_log_config(); peering_tp.start(); + + service.init(); + service.publish_map(osdmap); + service.publish_superblock(superblock); + service.max_oldest_map = superblock.oldest_map; + osd_op_tp.start(); disk_tp.start(); command_tp.start(); @@ -2676,11 +2682,6 @@ int OSD::init() tick_timer_without_osd_lock.add_event_after(cct->_conf->osd_heartbeat_interval, new C_Tick_WithoutOSDLock(this)); } - service.init(); - service.publish_map(osdmap); - service.publish_superblock(superblock); - service.max_oldest_map = superblock.oldest_map; - osd_lock.Unlock(); r = monc->authenticate(); -- 2.39.5