osrs.push_back(&osr);
}
for (auto& osr : osrs) {
- if (osr->deferred_pending && !osr->deferred_running) {
- _deferred_submit_unlock(osr.get());
- deferred_lock.lock();
+ if (osr->deferred_pending) {
+ if (!osr->deferred_running) {
+ _deferred_submit_unlock(osr.get());
+ deferred_lock.lock();
+ } else {
+ dout(20) << __func__ << " osr " << osr << " already has running"
+ << dendl;
+ }
+ } else {
+ dout(20) << __func__ << " osr " << osr << " has no pending" << dendl;
}
}
}
assert(osr->deferred_running == b);
osr->deferred_running = nullptr;
if (!osr->deferred_pending) {
+ dout(20) << __func__ << " dequeueing" << dendl;
auto q = deferred_queue.iterator_to(*osr);
deferred_queue.erase(q);
} else if (deferred_aggressive) {
finishers[0]->queue(new FunctionContext([&](int) {
deferred_try_submit();
}));
+ } else {
+ dout(20) << __func__ << " leaving queued, more pending" << dendl;
}
}