void Finisher::start()
{
+ ldout(cct, 10) << __func__ << dendl;
finisher_thread.create();
}
void Finisher::stop()
{
+ ldout(cct, 10) << __func__ << dendl;
finisher_lock.Lock();
finisher_stop = true;
finisher_cond.Signal();
finisher_lock.Unlock();
finisher_thread.join();
+ ldout(cct, 10) << __func__ << " finish" << dendl;
}
void Finisher::wait_for_empty()
} else
finisher_queue.push_back(c);
finisher_cond.Signal();
- finisher_lock.Unlock();
if (logger)
logger->inc(l_finisher_queue_len);
+ finisher_lock.Unlock();
}
void queue(vector<Context*>& ls) {
finisher_lock.Lock();
finisher_queue.insert(finisher_queue.end(), ls.begin(), ls.end());
finisher_cond.Signal();
+ if (logger)
+ logger->inc(l_finisher_queue_len, ls.size());
finisher_lock.Unlock();
ls.clear();
- if (logger)
- logger->inc(l_finisher_queue_len);
}
void queue(deque<Context*>& ls) {
finisher_lock.Lock();
finisher_queue.insert(finisher_queue.end(), ls.begin(), ls.end());
finisher_cond.Signal();
+ if (logger)
+ logger->inc(l_finisher_queue_len, ls.size());
finisher_lock.Unlock();
ls.clear();
- if (logger)
- logger->inc(l_finisher_queue_len);
}
void queue(list<Context*>& ls) {
finisher_lock.Lock();
finisher_queue.insert(finisher_queue.end(), ls.begin(), ls.end());
finisher_cond.Signal();
+ if (logger)
+ logger->inc(l_finisher_queue_len, ls.size());
finisher_lock.Unlock();
ls.clear();
- if (logger)
- logger->inc(l_finisher_queue_len);
}
void start();