diff options
Diffstat (limited to 'src/common/Finisher.cc')
-rw-r--r-- | src/common/Finisher.cc | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/common/Finisher.cc b/src/common/Finisher.cc index 72bfb6f9aa7..076da694414 100644 --- a/src/common/Finisher.cc +++ b/src/common/Finisher.cc @@ -34,6 +34,21 @@ void Finisher::wait_for_empty() finisher_lock.Unlock(); } +void Finisher::queue(Context *c, int r) +{ + finisher_lock.Lock(); + ldout(cct, 10) << "queue " << c << " " << r << dendl; + if (r) { + finisher_queue_rval.push_back(pair<Context*, int>(c, r)); + finisher_queue.push_back(NULL); + } else + finisher_queue.push_back(c); + finisher_cond.Signal(); + finisher_lock.Unlock(); + if (logger) + logger->inc(l_finisher_queue_len); +} + void *Finisher::finisher_thread_entry() { finisher_lock.Lock(); |