From: Haomai Wang Date: Wed, 27 May 2015 09:07:38 +0000 (+0800) Subject: AsyncConnection: Use reference instead of value passing for try_send X-Git-Tag: v9.0.2~23^2~8 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=27d24a84893ac57ea88383e90a842c6eafacb09f;p=ceph.git AsyncConnection: Use reference instead of value passing for try_send Signed-off-by: Haomai Wang --- diff --git a/src/msg/async/AsyncConnection.cc b/src/msg/async/AsyncConnection.cc index f4745f5a7f09..8fcf4858ed15 100644 --- a/src/msg/async/AsyncConnection.cc +++ b/src/msg/async/AsyncConnection.cc @@ -269,9 +269,10 @@ int AsyncConnection::do_sendmsg(struct msghdr &msg, int len, bool more) // return the remaining bytes, it may larger than the length of ptr // else return < 0 means error -int AsyncConnection::_try_send(bufferlist send_bl, bool send) +int AsyncConnection::_try_send(bufferlist &send_bl, bool send) { assert(write_lock.is_locked()); + ldout(async_msgr->cct, 20) << __func__ << " send bl length is " << send_bl.length() << dendl; if (send_bl.length()) { if (outcoming_bl.length()) outcoming_bl.claim_append(send_bl); @@ -1966,10 +1967,8 @@ int AsyncConnection::send_message(Message *m) m->put(); } else { out_q[m->get_priority()].push_back(make_pair(bl, m)); - if (can_write == 0) { - ldout(async_msgr->cct, 10) << __func__ << " write is denied, reschedule m=" << m << dendl; - center->dispatch_event_external(write_handler); - } + ldout(async_msgr->cct, 15) << __func__ << " inline write is denied, reschedule m=" << m << dendl; + center->dispatch_event_external(write_handler); } return 0; } diff --git a/src/msg/async/AsyncConnection.h b/src/msg/async/AsyncConnection.h index 85a203ba357b..a707135ddccb 100644 --- a/src/msg/async/AsyncConnection.h +++ b/src/msg/async/AsyncConnection.h @@ -45,13 +45,13 @@ class AsyncConnection : public Connection { int read_bulk(int fd, char *buf, int len); int do_sendmsg(struct msghdr &msg, int len, bool more); - int try_send(bufferlist bl, bool send=true) { + int try_send(bufferlist &bl, bool send=true) { Mutex::Locker l(write_lock); return _try_send(bl, send); } // if "send" is false, it will only append bl to send buffer // the main usage is avoid error happen outside messenger threads - int _try_send(bufferlist bl, bool send=true); + int _try_send(bufferlist &bl, bool send=true); int _send(Message *m); void prepare_send_message(Message *m, bufferlist &bl); int read_until(uint64_t needed, char *p);