From: Sage Weil Date: Mon, 25 Aug 2014 04:18:00 +0000 (-0700) Subject: msg/Accepter: do not unlearn_addr on bind() X-Git-Tag: v0.86~218^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=f651f93b343f81bd0b4645f5def8ce3f2cf4abed;p=ceph.git msg/Accepter: do not unlearn_addr on bind() It is dangerous to set need_addr = true as it means someone may set the addr to something else (specifically the port) in a racing thread. However, it is not necessary: the only reason we added it way back in 5d5045d31a9e10d21b44eb1bd137db9ae53128ff was so that local_connection->peer_addr would get updated, and bind() now calls that unconditionally. Fixes: #9079 Backport: firefly Signed-off-by: Sage Weil --- diff --git a/src/msg/Accepter.cc b/src/msg/Accepter.cc index 718d4785e28e..029a037bdbd7 100644 --- a/src/msg/Accepter.cc +++ b/src/msg/Accepter.cc @@ -152,9 +152,6 @@ int Accepter::rebind(const set& avoid_ports) { ldout(msgr->cct,1) << "accepter.rebind avoid " << avoid_ports << dendl; - // invalidate our previously learned address. - msgr->unlearn_addr(); - entity_addr_t addr = msgr->get_myaddr(); set new_avoid = avoid_ports; new_avoid.insert(addr.get_port()); diff --git a/src/msg/SimpleMessenger.cc b/src/msg/SimpleMessenger.cc index 6001acf3a60e..f1f052bce92a 100644 --- a/src/msg/SimpleMessenger.cc +++ b/src/msg/SimpleMessenger.cc @@ -694,13 +694,6 @@ void SimpleMessenger::learned_addr(const entity_addr_t &peer_addr_for_me) lock.Unlock(); } -void SimpleMessenger::unlearn_addr() -{ - lock.Lock(); - need_addr = true; - lock.Unlock(); -} - void SimpleMessenger::init_local_connection() { local_connection->peer_addr = my_inst.addr; diff --git a/src/msg/SimpleMessenger.h b/src/msg/SimpleMessenger.h index 2943db9d454e..006b60be6958 100644 --- a/src/msg/SimpleMessenger.h +++ b/src/msg/SimpleMessenger.h @@ -385,13 +385,6 @@ public: */ void learned_addr(const entity_addr_t& peer_addr_for_me); - /** - * Tell the SimpleMessenger its address is no longer known - * - * This happens when we rebind to a new port. - */ - void unlearn_addr(); - /** * Release memory accounting back to the dispatch throttler. *