From: Sage Weil Date: Tue, 31 Jan 2017 17:31:42 +0000 (-0500) Subject: mon/PGMonitor: fix force_create_pg X-Git-Tag: v11.2.1~169^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=1120cd74d88b163f7cd1c81ae5670bf6d6153715;p=ceph.git mon/PGMonitor: fix force_create_pg We weren't carefully registering the creating PG. In particular, the current osd mappings (acting, up, etc.) weren't getting filled in, which meant the PG wasn't (necessarily) mapped to an OSD until the OSDMap updated and we recalculated mappings. Fix by sending us through the common code path so that all fields get updated properly. Fixes: http://tracker.ceph.com/issues/18298 Signed-off-by: Sage Weil (cherry picked from commit 9a41a0b7289fa59f4b747a63e152e88af6e8abd5) Conflicts: src/mon/PGMonitor.cc --- diff --git a/src/mon/PGMap.h b/src/mon/PGMap.h index 7787d6cbb02..1c86ab3afff 100644 --- a/src/mon/PGMap.h +++ b/src/mon/PGMap.h @@ -412,7 +412,6 @@ public: PGMap *pg_map, PGMap::Incremental *pending_inc); -protected: static void register_pg( const OSDMap &osd_map, pg_t pgid, epoch_t epoch, diff --git a/src/mon/PGMonitor.cc b/src/mon/PGMonitor.cc index 0baeb86639b..6b9529d6cd8 100644 --- a/src/mon/PGMonitor.cc +++ b/src/mon/PGMonitor.cc @@ -1430,10 +1430,13 @@ bool PGMonitor::prepare_command(MonOpRequestRef op) goto reply; } { - pg_stat_t& s = pending_inc.pg_stat_updates[pgid]; - s.state = PG_STATE_CREATING; - s.created = epoch; - s.last_change = ceph_clock_now(g_ceph_context); + PGMapUpdater::register_pg( + mon->osdmon()->osdmap, + pgid, + epoch, + true, + &pg_map, + &pending_inc); } ss << "pg " << pgidstr << " now creating, ok"; goto update;