From: xie xingguo Date: Wed, 26 Sep 2018 09:03:50 +0000 (+0800) Subject: osd/OSD: drop osd_lock only if pg osdmaps are truly laggy X-Git-Tag: v14.0.1~70^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=d80993d81aee7fe225407a623a9757c7944c3123;p=ceph.git osd/OSD: drop osd_lock only if pg osdmaps are truly laggy We only need to drop the lock if we are going to block. Signed-off-by: xie xingguo --- diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 4b19739f040..4bc4977df93 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -7445,7 +7445,6 @@ void OSD::handle_osd_map(MOSDMap *m) epoch_t need = osdmap->get_epoch() - max_lag; dout(10) << __func__ << " waiting for pgs to catch up (need " << need << " max_lag " << max_lag << ")" << dendl; - osd_lock.Unlock(); for (auto shard : shards) { epoch_t min = shard->get_min_pg_epoch(); if (need > min) { @@ -7454,10 +7453,11 @@ void OSD::handle_osd_map(MOSDMap *m) << ", map cache is " << cct->_conf->osd_map_cache_size << ", max_lag_factor " << m_osd_pg_epoch_max_lag_factor << ")" << dendl; + osd_lock.Unlock(); shard->wait_min_pg_epoch(need); + osd_lock.Lock(); } } - osd_lock.Lock(); } }