From: Sage Weil Date: Thu, 4 Jan 2018 14:46:35 +0000 (-0600) Subject: osd/PG: keep epoch, not map ref, of last osdmap for lsat persisted epoch X-Git-Tag: v13.1.0~390^2~124 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=beb8dd5b1adfa1330a1537f60f35d4b2c2442399;p=ceph.git osd/PG: keep epoch, not map ref, of last osdmap for lsat persisted epoch No need to pin the map in memory! Signed-off-by: Sage Weil --- diff --git a/src/osd/PG.cc b/src/osd/PG.cc index a1995c58d2a10..787449b14b860 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -321,7 +321,7 @@ PG::PG(OSDService *o, OSDMapRef curmap, p.get_split_bits(_pool.info.get_pg_num()), _pool.id, p.shard), - last_persisted_osdmap_ref(curmap), + last_persisted_osdmap(curmap->get_epoch()), deleting(false), trace_endpoint("0.0.0.0", 0, "PG"), dirty_info(false), dirty_big_info(false), @@ -3463,7 +3463,7 @@ void PG::prepare_write_info(map *km) assert(ret == 0); if (need_update_epoch) last_epoch = get_osdmap()->get_epoch(); - last_persisted_osdmap_ref = osdmap_ref; + last_persisted_osdmap = last_epoch; dirty_info = false; dirty_big_info = false; @@ -6455,15 +6455,15 @@ void PG::handle_activate_map(RecoveryCtx *rctx) dout(10) << "handle_activate_map " << dendl; ActMap evt; recovery_state.handle_event(evt, rctx); - if (osdmap_ref->get_epoch() - last_persisted_osdmap_ref->get_epoch() > + if (osdmap_ref->get_epoch() - last_persisted_osdmap > cct->_conf->osd_pg_epoch_persisted_max_stale) { dout(20) << __func__ << ": Dirtying info: last_persisted is " - << last_persisted_osdmap_ref->get_epoch() + << last_persisted_osdmap << " while current is " << osdmap_ref->get_epoch() << dendl; dirty_info = true; } else { dout(20) << __func__ << ": Not dirtying info: last_persisted is " - << last_persisted_osdmap_ref->get_epoch() + << last_persisted_osdmap << " while current is " << osdmap_ref->get_epoch() << dendl; } if (osdmap_ref->check_new_blacklist_entries()) { diff --git a/src/osd/PG.h b/src/osd/PG.h index 39e7069ac6c82..f8d63079b01ae 100644 --- a/src/osd/PG.h +++ b/src/osd/PG.h @@ -554,7 +554,7 @@ protected: return get_pgbackend()->get_is_recoverable_predicate(); } protected: - OSDMapRef last_persisted_osdmap_ref; + epoch_t last_persisted_osdmap; void requeue_map_waiters();