From: Samuel Just Date: Wed, 23 May 2012 17:52:05 +0000 (-0700) Subject: OSD,PG: issue pg removals in line, remove remove_list X-Git-Tag: v0.50~109^2~2^2~35 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=73f5ce948149f7a62e9bd828bc91de2e533a588d;p=ceph.git OSD,PG: issue pg removals in line, remove remove_list Signed-off-by: Samuel Just --- diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index c024d1f87d34..a0617be95689 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -703,7 +703,6 @@ OSD::OSD(int id, Messenger *internal_messenger, Messenger *external_messenger, command_wq(this, g_conf->osd_command_thread_timeout, &command_tp), recovery_ops_active(0), recovery_wq(this, g_conf->osd_recovery_thread_timeout, &recovery_tp), - remove_list_lock("OSD::remove_list_lock"), replay_queue_lock("OSD::replay_queue_lock"), snap_trim_wq(this, g_conf->osd_snap_trim_thread_timeout, &disk_tp), scrub_wq(this, g_conf->osd_scrub_thread_timeout, &disk_tp), @@ -1904,22 +1903,6 @@ void OSD::tick() do_mon_report(); } - // remove stray pgs? - remove_list_lock.Lock(); - for (map > >::iterator p = remove_list.begin(); - p != remove_list.end(); - p++) - for (map >::iterator q = p->second.begin(); - q != p->second.end(); - q++) { - if (osdmap->is_up(q->first)) { - MOSDPGRemove *m = new MOSDPGRemove(p->first, q->second); - cluster_messenger->send_message(m, osdmap->get_cluster_inst(q->first)); - } - } - remove_list.clear(); - remove_list_lock.Unlock(); - map_lock.put_read(); timer.add_event_after(1.0, new C_Tick(this)); @@ -5258,12 +5241,6 @@ void OSDService::queue_for_op(PG *pg) op_wq.queue(pg); } -void OSDService::queue_for_removal(epoch_t epoch, int osdnum, pg_t pgid) { - osd->remove_list_lock.Lock(); - osd->remove_list[epoch][osdnum].push_back(pgid); - osd->remove_list_lock.Unlock(); -} - void OSD::process_peering_event(PG *pg) { bool need_up_thru = false; diff --git a/src/osd/OSD.h b/src/osd/OSD.h index f332f4ed944b..c552a959072d 100644 --- a/src/osd/OSD.h +++ b/src/osd/OSD.h @@ -274,7 +274,6 @@ public: bool queue_for_scrub(PG *pg) { return scrub_wq.queue(pg); } - void queue_for_removal(epoch_t epoch, int osd, pg_t pgid); // osd map cache (past osd maps) Mutex map_cache_lock; @@ -982,9 +981,6 @@ protected: void do_recovery(PG *pg); bool _recover_now(); - Mutex remove_list_lock; - map > > remove_list; - // replay / delayed pg activation Mutex replay_queue_lock; list< pair > replay_queue; diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 12008f49af95..3a95dc85205c 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -1776,7 +1776,13 @@ void PG::purge_strays() p++) { if (get_osdmap()->is_up(*p)) { dout(10) << "sending PGRemove to osd." << *p << dendl; - osd->queue_for_removal(get_osdmap()->get_epoch(), *p, info.pgid); + vector to_remove; + to_remove.push_back(info.pgid); + MOSDPGRemove *m = new MOSDPGRemove( + get_osdmap()->get_epoch(), + to_remove); + osd->cluster_messenger->send_message( + m, get_osdmap()->get_cluster_inst(*p)); stray_purged.insert(*p); } else { dout(10) << "not sending PGRemove to down osd." << *p << dendl;