]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: clean out temp pg on startup
authorSage Weil <sage@newdream.net>
Mon, 19 Jul 2010 17:48:48 +0000 (10:48 -0700)
committerSage Weil <sage@newdream.net>
Mon, 19 Jul 2010 17:48:48 +0000 (10:48 -0700)
src/osd/OSD.cc
src/osd/OSD.h

index 6a17d5e413381c4fbf9ac51552c85d3445bf6353..d61f7a74bfa8e09b092446d5b5e874b3bd18cb88 100644 (file)
@@ -479,6 +479,8 @@ int OSD::init()
     osdmap->decode(bl);
   }
 
+  clear_temp();
+
   // load up pgs (as they previously existed)
   load_pgs();
   
@@ -774,6 +776,28 @@ int OSD::read_superblock()
 
 
 
+void OSD::clear_temp()
+{
+  dout(10) << "clear_temp" << dendl;
+
+  vector<sobject_t> objects;
+  store->collection_list(temp_coll, objects);
+
+  dout(10) << objects.size() << " objects" << dendl;
+  if (objects.empty())
+    return;
+
+  // delete them.
+  ObjectStore::Transaction *t = new ObjectStore::Transaction;
+  for (vector<sobject_t>::iterator p = objects.begin();
+       p != objects.end();
+       p++)
+    t->collection_remove(temp_coll, *p);
+  int r = store->queue_transaction(NULL, t);
+  assert(r == 0);
+  store->sync_and_flush();
+  dout(10) << "done" << dendl;
+}
 
 
 // ======================================================
index 100370bfef2988f3edbef1b62ddc5ae8b2975780..b95f343028417f7514187da3fe003e068dd8cbff 100644 (file)
@@ -520,6 +520,8 @@ protected:
 
   // -- boot --
   void send_boot();
+  
+  void clear_temp();
 
   // -- alive --
   epoch_t up_thru_wanted;