]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
OSD::clear_temp should clear snap mapper entries as well
authorSamuel Just <sam.just@inktank.com>
Mon, 29 Apr 2013 18:29:04 +0000 (11:29 -0700)
committerSamuel Just <sam.just@inktank.com>
Tue, 7 May 2013 15:16:04 +0000 (08:16 -0700)
Signed-off-by: Samuel Just <sam.just@inktank.com>
src/osd/OSD.cc

index 690bce68787773980528cf8e44e008b143f9aeed..83cf0a9589f56c0e0488ee542ac9b210c8cc4307 100644 (file)
@@ -1507,6 +1507,12 @@ int OSD::read_superblock()
 
 void OSD::clear_temp(ObjectStore *store, coll_t tmp)
 {
+  OSDriver driver(
+    store,
+    coll_t(),
+    make_snapmapper_oid());
+  SnapMapper mapper(&driver, 0, 0, 0);
+
   vector<hobject_t> objects;
   store->collection_list(tmp, objects);
 
@@ -1516,6 +1522,10 @@ void OSD::clear_temp(ObjectStore *store, coll_t tmp)
   for (vector<hobject_t>::iterator p = objects.begin();
        p != objects.end();
        ++p, removed++) {
+    OSDriver::OSTransaction _t(driver.get_transaction(&t));
+    int r = mapper.remove_oid(*p, &_t);
+    if (r != 0 && r != -ENOENT)
+      assert(0);
     t.collection_remove(tmp, *p);
     if (removed > 300) {
       int r = store->apply_transaction(t);