]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
OSD: remove snap_mapper entries in RemoveWQ
authorSamuel Just <sam.just@inktank.com>
Wed, 6 Mar 2013 22:55:28 +0000 (14:55 -0800)
committerSamuel Just <sam.just@inktank.com>
Thu, 14 Mar 2013 02:45:13 +0000 (19:45 -0700)
This is a somewhat ugly hack for now until we implement
pg resurrection.

Signed-off-by: Samuel Just <sam.just@inktank.com>
src/osd/OSD.cc

index f2cf321d9971f6ade231c95009b8960ef87f9449..c1619799fc2ba484ed98447c63476eaf6cea1eaf 100644 (file)
@@ -2528,6 +2528,11 @@ void TestOpsSocketHook::test_ops(OSDService *service, ObjectStore *store,
 // =========================================
 void OSD::RemoveWQ::_process(boost::tuple<coll_t, SequencerRef, DeletingStateRef> *item)
 {
+  OSDriver driver(
+    store,
+    coll_t(),
+    make_snapmapper_oid());
+  SnapMapper mapper(&driver, 0, 0, 0);
   coll_t &coll = item->get<0>();
   ObjectStore::Sequencer *osr = item->get<1>().get();
   if (osr)
@@ -2540,6 +2545,11 @@ void OSD::RemoveWQ::_process(boost::tuple<coll_t, SequencerRef, DeletingStateRef
   for (vector<hobject_t>::iterator i = olist.begin();
        i != olist.end();
        ++i, ++num) {
+    OSDriver::OSTransaction _t(driver.get_transaction(t));
+    int r = mapper.remove_oid(*i, &_t);
+    if (r != 0 && r != -ENOENT) {
+      assert(0);
+    }
     t->remove(coll, *i);
     if (num >= g_conf->osd_target_transaction_size) {
       store->apply_transaction(osr, *t);