From cf25bcc04417668ab4600ac716def1ecafa312ee Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Fri, 15 Sep 2017 18:51:39 +0800 Subject: [PATCH] osd: splice pg_temp_wanted more efficiently Signed-off-by: Kefu Chai --- src/osd/OSD.cc | 8 +++----- src/osd/OSD.h | 4 ++-- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 0dd6155274799..fa8dfcbddaa0c 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -1035,7 +1035,7 @@ pair OSDService::get_con_osd_hb(int peer, epoch_t f } -void OSDService::queue_want_pg_temp(pg_t pgid, vector& want) +void OSDService::queue_want_pg_temp(pg_t pgid, const vector& want) { Mutex::Locker l(pg_temp_lock); map >::iterator p = pg_temp_pending.find(pgid); @@ -1054,10 +1054,8 @@ void OSDService::remove_want_pg_temp(pg_t pgid) void OSDService::_sent_pg_temp() { - for (map >::iterator p = pg_temp_wanted.begin(); - p != pg_temp_wanted.end(); - ++p) - pg_temp_pending[p->first] = p->second; + pg_temp_pending.insert(make_move_iterator(begin(pg_temp_wanted)), + make_move_iterator(end(pg_temp_wanted))); pg_temp_wanted.clear(); } diff --git a/src/osd/OSD.h b/src/osd/OSD.h index 575d84c7e1572..2982656fdd349 100644 --- a/src/osd/OSD.h +++ b/src/osd/OSD.h @@ -841,7 +841,7 @@ private: map > pg_temp_pending; void _sent_pg_temp(); public: - void queue_want_pg_temp(pg_t pgid, vector& want); + void queue_want_pg_temp(pg_t pgid, const vector& want); void remove_want_pg_temp(pg_t pgid); void requeue_pg_temp(); void send_pg_temp(); @@ -1149,7 +1149,7 @@ public: PREPARING_TO_STOP, STOPPING }; std::atomic_int state{NOT_STOPPING}; - int get_state() { + int get_state() const { return state; } void set_state(int s) { -- 2.39.5