From: Samuel Just Date: Thu, 7 Nov 2013 21:44:07 +0000 (-0800) Subject: DispatchQueue: factor out pre_dispatch and post_dispatch X-Git-Tag: v0.81~57^2~41 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a62db614a633aa0545854c7127bb2cd689426702;p=ceph.git DispatchQueue: factor out pre_dispatch and post_dispatch Signed-off-by: Samuel Just Reviewed-by: Greg Farnum --- diff --git a/src/msg/DispatchQueue.cc b/src/msg/DispatchQueue.cc index 8a79ce0d7e04..9489a40490dd 100644 --- a/src/msg/DispatchQueue.cc +++ b/src/msg/DispatchQueue.cc @@ -36,6 +36,30 @@ double DispatchQueue::get_max_age(utime_t now) { return (now - marrival.begin()->first); } +uint64_t DispatchQueue::pre_dispatch(Message *m) +{ + ldout(cct,1) << "<== " << m->get_source_inst() + << " " << m->get_seq() + << " ==== " << *m + << " ==== " << m->get_payload().length() + << "+" << m->get_middle().length() + << "+" << m->get_data().length() + << " (" << m->get_footer().front_crc << " " + << m->get_footer().middle_crc + << " " << m->get_footer().data_crc << ")" + << " " << m << " con " << m->get_connection() + << dendl; + uint64_t msize = m->get_dispatch_throttle_size(); + m->set_dispatch_throttle_size(0); // clear it out, in case we requeue this message. + return msize; +} + +void DispatchQueue::post_dispatch(Message *m, uint64_t msize) +{ + msgr->dispatch_throttle_release(msize); + ldout(cct,20) << "done calling dispatch on " << m << dendl; +} + void DispatchQueue::enqueue(Message *m, int priority, uint64_t id) { Mutex::Locker l(lock); @@ -109,23 +133,9 @@ void DispatchQueue::entry() ldout(cct,10) << " stop flag set, discarding " << m << " " << *m << dendl; m->put(); } else { - uint64_t msize = m->get_dispatch_throttle_size(); - m->set_dispatch_throttle_size(0); // clear it out, in case we requeue this message. - - ldout(cct,1) << "<== " << m->get_source_inst() - << " " << m->get_seq() - << " ==== " << *m - << " ==== " << m->get_payload().length() << "+" << m->get_middle().length() - << "+" << m->get_data().length() - << " (" << m->get_footer().front_crc << " " << m->get_footer().middle_crc - << " " << m->get_footer().data_crc << ")" - << " " << m << " con " << m->get_connection() - << dendl; + uint64_t msize = pre_dispatch(m); msgr->ms_deliver_dispatch(m); - - msgr->dispatch_throttle_release(msize); - - ldout(cct,20) << "done calling dispatch on " << m << dendl; + post_dispatch(m, msize); } } diff --git a/src/msg/DispatchQueue.h b/src/msg/DispatchQueue.h index dffd65cc54ef..5b0decdd984b 100644 --- a/src/msg/DispatchQueue.h +++ b/src/msg/DispatchQueue.h @@ -106,6 +106,9 @@ class DispatchQueue { } } dispatch_thread; + uint64_t pre_dispatch(Message *m); + void post_dispatch(Message *m, uint64_t msize); + public: bool stop; void local_delivery(Message *m, int priority);