From: Sage Weil Date: Fri, 28 Sep 2012 14:19:38 +0000 (-0700) Subject: msg/Messenger: avoid large pass by value X-Git-Tag: v0.54~187^2~17 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=b5fb298d382d03472ecee0d4967b5d4db9d22cbf;p=ceph.git msg/Messenger: avoid large pass by value CID 717049: Big parameter passed by value (PASS_BY_VALUE) At (1): Passing parameter bind_addr of type entity_addr_t (size 136 bytes) by value. Signed-off-by: Sage Weil --- diff --git a/src/msg/Accepter.cc b/src/msg/Accepter.cc index 0c9917e0ab5e..f67dbd47a961 100644 --- a/src/msg/Accepter.cc +++ b/src/msg/Accepter.cc @@ -37,7 +37,7 @@ * Accepter */ -int Accepter::bind(entity_addr_t &bind_addr, int avoid_port1, int avoid_port2) +int Accepter::bind(const entity_addr_t &bind_addr, int avoid_port1, int avoid_port2) { const md_config_t *conf = msgr->cct->_conf; // bind to a socket @@ -87,9 +87,9 @@ int Accepter::bind(entity_addr_t &bind_addr, int avoid_port1, int avoid_port2) rc = ::bind(listen_sd, (struct sockaddr *) &listen_addr.ss_addr(), listen_addr.addr_size()); if (rc < 0) { char buf[80]; - ldout(msgr->cct,0) << "accepter.bind unable to bind to " << bind_addr.ss_addr() + ldout(msgr->cct,0) << "accepter.bind unable to bind to " << listen_addr.ss_addr() << ": " << strerror_r(errno, buf, sizeof(buf)) << dendl; - cerr << "accepter.bind unable to bind to " << bind_addr.ss_addr() + cerr << "accepter.bind unable to bind to " << listen_addr.ss_addr() << ": " << strerror_r(errno, buf, sizeof(buf)) << std::endl; return -errno; } @@ -105,10 +105,10 @@ int Accepter::bind(entity_addr_t &bind_addr, int avoid_port1, int avoid_port2) } if (rc < 0) { char buf[80]; - ldout(msgr->cct,0) << "accepter.bind unable to bind to " << bind_addr.ss_addr() + ldout(msgr->cct,0) << "accepter.bind unable to bind to " << listen_addr.ss_addr() << " on any port in range " << CEPH_PORT_START << "-" << CEPH_PORT_LAST << ": " << strerror_r(errno, buf, sizeof(buf)) << dendl; - cerr << "accepter.bind unable to bind to " << bind_addr.ss_addr() + cerr << "accepter.bind unable to bind to " << listen_addr.ss_addr() << " on any port in range " << CEPH_PORT_START << "-" << CEPH_PORT_LAST << ": " << strerror_r(errno, buf, sizeof(buf)) << std::endl; return -errno; diff --git a/src/msg/Accepter.h b/src/msg/Accepter.h index 07da2b50e7eb..07d766b32cdd 100644 --- a/src/msg/Accepter.h +++ b/src/msg/Accepter.h @@ -35,7 +35,7 @@ public: void *entry(); void stop(); - int bind(entity_addr_t &bind_addr, int avoid_port1=0, int avoid_port2=0); + int bind(const entity_addr_t &bind_addr, int avoid_port1=0, int avoid_port2=0); int rebind(int avoid_port); int start(); }; diff --git a/src/msg/Messenger.h b/src/msg/Messenger.h index 9e3420cd8b2f..88f8732e0023 100644 --- a/src/msg/Messenger.h +++ b/src/msg/Messenger.h @@ -314,7 +314,7 @@ public: * @return 0 on success, or -1 on error, or -errno if * we can be more specific about the failure. */ - virtual int bind(entity_addr_t bind_addr) = 0; + virtual int bind(const entity_addr_t& bind_addr) = 0; /** * This is an optional function for implementations * to override. For those implementations that do diff --git a/src/msg/SimpleMessenger.cc b/src/msg/SimpleMessenger.cc index 9b5ad5631482..c44d1ca5c717 100644 --- a/src/msg/SimpleMessenger.cc +++ b/src/msg/SimpleMessenger.cc @@ -244,7 +244,7 @@ void SimpleMessenger::queue_reap(Pipe *pipe) -int SimpleMessenger::bind(entity_addr_t bind_addr) +int SimpleMessenger::bind(const entity_addr_t &bind_addr) { lock.Lock(); if (started) { diff --git a/src/msg/SimpleMessenger.h b/src/msg/SimpleMessenger.h index f596a9e04c7b..cfa0ea9d8d33 100644 --- a/src/msg/SimpleMessenger.h +++ b/src/msg/SimpleMessenger.h @@ -179,7 +179,7 @@ public: * @return 0 on success, or -1 if the SimpleMessenger is already running, or * -errno if an error is returned from a system call. */ - int bind(entity_addr_t bind_addr); + int bind(const entity_addr_t& bind_addr); /** * This function performs a full restart of the SimpleMessenger. It * calls mark_down_all() and binds to a new port. (If avoid_port