summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-01-18 15:30:06 -0800
committerSage Weil <sage@inktank.com>2013-01-18 15:44:41 -0800
commit4712e984d3f62cdf51ea67da8197eed18a5983dd (patch)
tree5359702cd241f3e6326b3ced511c2d3991415fd2
parentbc994045ad67fb70c7a0457b8cd29273dd5d1654 (diff)
downloadceph-4712e984d3f62cdf51ea67da8197eed18a5983dd.tar.gz
osd: make pg removal thread more friendly
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>
-rw-r--r--src/osd/OSD.cc12
1 files changed, 4 insertions, 8 deletions
diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc
index 20187ef0428..c1027adf112 100644
--- a/src/osd/OSD.cc
+++ b/src/osd/OSD.cc
@@ -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;
}
// =========================================