]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
OSD,PG: issue pg removals in line, remove remove_list
authorSamuel Just <sam.just@inktank.com>
Wed, 23 May 2012 17:52:05 +0000 (10:52 -0700)
committerSamuel Just <sam.just@inktank.com>
Thu, 5 Jul 2012 17:15:00 +0000 (10:15 -0700)
Signed-off-by: Samuel Just <sam.just@inktank.com>
src/osd/OSD.cc
src/osd/OSD.h
src/osd/PG.cc

index c024d1f87d3470e7e87f39bbcc417e78b5473bd7..a0617be956896364576c2a2b5ab1907696a1da5c 100644 (file)
@@ -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<epoch_t, map<int, vector<pg_t> > >::iterator p = remove_list.begin();
-       p != remove_list.end();
-       p++)
-    for (map<int, vector<pg_t> >::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;
index f332f4ed944b673c2cefa20d990ca885d6abc078..c552a959072de7b1dc5591e7e387345ee9085294 100644 (file)
@@ -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<epoch_t, map<int, vector<pg_t> > > remove_list;
-
   // replay / delayed pg activation
   Mutex replay_queue_lock;
   list< pair<pg_t, utime_t > > replay_queue;
index 12008f49af953461566f0db57e6d1ddcf63710fa..3a95dc85205caf50c1dae3722ad6b8f8fef47168 100644 (file)
@@ -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<pg_t> 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;