]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: make pg removal thread more friendly
authorSage Weil <sage@inktank.com>
Fri, 18 Jan 2013 23:30:06 +0000 (15:30 -0800)
committerSage Weil <sage@inktank.com>
Fri, 18 Jan 2013 23:44:41 +0000 (15:44 -0800)
For a large PG these are saturating the filestore and journal queues.  Do
them synchronously to make them more friendly.  They don't need to be fast.

Signed-off-by: Sage Weil <sage@inktank.com>
src/osd/OSD.cc

index 20187ef0428a3393e60a6fd273ec37c47427f28a..c1027adf11241d5d17f35ff4ca548a2375d71f39 100644 (file)
@@ -2307,19 +2307,15 @@ void OSD::RemoveWQ::_process(boost::tuple<coll_t, SequencerRef, DeletingStateRef
        i != olist.end();
        ++i, ++num) {
     if (num % 20 == 0) {
-      store->queue_transaction(
-       osr, t,
-       new ObjectStore::C_DeleteTransactionHolder<SequencerRef>(t, item->get<1>()),
-       new ContainerContext<SequencerRef>(item->get<1>()));
+      store->apply_transaction(osr, *t);
+      delete t;
       t = new ObjectStore::Transaction;
     }
     t->remove(coll, *i);
   }
   t->remove_collection(coll);
-  store->queue_transaction(
-    osr, t,
-    new ObjectStore::C_DeleteTransactionHolder<SequencerRef>(t, item->get<1>()),
-    new ContainerContext<SequencerRef>(item->get<1>()));
+  store->apply_transaction(*t);
+  delete t;
   delete item;
 }
 // =========================================