diff options
author | Sage Weil <sage@inktank.com> | 2013-01-18 15:30:06 -0800 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-01-18 15:44:41 -0800 |
commit | 4712e984d3f62cdf51ea67da8197eed18a5983dd (patch) | |
tree | 5359702cd241f3e6326b3ced511c2d3991415fd2 | |
parent | bc994045ad67fb70c7a0457b8cd29273dd5d1654 (diff) | |
download | ceph-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.cc | 12 |
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; } // ========================================= |