ObjectStore *store, SnapMapper *mapper,
OSDriver *osdriver,
ObjectStore::Sequencer *osr,
- coll_t coll, DeletingStateRef dstate)
+ coll_t coll, DeletingStateRef dstate,
+ ThreadPool::TPHandle &handle)
{
vector<hobject_t> olist;
int64_t num = 0;
ObjectStore::Transaction *t = new ObjectStore::Transaction;
hobject_t next;
while (!next.is_max()) {
+ handle.reset_tp_timeout();
store->collection_list_partial(
coll,
next,
C_SaferCond waiter;
store->queue_transaction(osr, t, &waiter);
bool cont = dstate->pause_clearing();
+ handle.suspend_tp_timeout();
waiter.wait();
+ handle.reset_tp_timeout();
if (cont)
cont = dstate->resume_clearing();
delete t;
C_SaferCond waiter;
store->queue_transaction(osr, t, &waiter);
bool cont = dstate->pause_clearing();
+ handle.suspend_tp_timeout();
waiter.wait();
+ handle.reset_tp_timeout();
if (cont)
cont = dstate->resume_clearing();
delete t;
return cont;
}
-void OSD::RemoveWQ::_process(pair<PGRef, DeletingStateRef> item)
+void OSD::RemoveWQ::_process(
+ pair<PGRef, DeletingStateRef> item,
+ ThreadPool::TPHandle &handle)
{
PGRef pg(item.first);
SnapMapper &mapper = pg->snap_mapper;
if (pg->have_temp_coll()) {
bool cont = remove_dir(
- store, &mapper, &driver, pg->osr.get(), pg->get_temp_coll(), item.second);
+ store, &mapper, &driver, pg->osr.get(), pg->get_temp_coll(), item.second,
+ handle);
if (!cont)
return;
}
bool cont = remove_dir(
- store, &mapper, &driver, pg->osr.get(), coll, item.second);
+ store, &mapper, &driver, pg->osr.get(), coll, item.second,
+ handle);
if (!cont)
return;