From: Amir Vadai Date: Tue, 23 May 2017 07:33:30 +0000 (+0300) Subject: Revert "msg/async: Postpone bind if network stack is not ready" X-Git-Tag: ses5-milestone6~9^2~21^2~17 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=30b6fd9967cf7fcd07a443bf66fc75f06f95ed84;p=ceph.git Revert "msg/async: Postpone bind if network stack is not ready" This reverts commit a5b87e2fb83adec2b0fe060d3b22acfb1b9db1ed. Change-Id: Ia1bc0535636de27d599cfb2dc7be2a555e0a2cd7 Issue: 995322 Signed-off-by: Amir Vadai --- diff --git a/src/msg/async/AsyncMessenger.cc b/src/msg/async/AsyncMessenger.cc index 122473179c3c..814d058c8f73 100644 --- a/src/msg/async/AsyncMessenger.cc +++ b/src/msg/async/AsyncMessenger.cc @@ -291,15 +291,6 @@ void AsyncMessenger::ready() { ldout(cct,10) << __func__ << " " << get_myaddr() << dendl; - stack->ready(); - if (pending_bind) { - int err = bind(pending_bind_addr); - if (err) { - lderr(cct) << __func__ << " postponed bind failed" << dendl; - ceph_abort(); - } - } - Mutex::Locker l(lock); for (auto &&p : processors) p->start(); @@ -329,23 +320,12 @@ int AsyncMessenger::shutdown() int AsyncMessenger::bind(const entity_addr_t &bind_addr) { lock.Lock(); - - if (!pending_bind && started) { + if (started) { ldout(cct,10) << __func__ << " already started" << dendl; lock.Unlock(); return -1; } - ldout(cct,10) << __func__ << " bind " << bind_addr << dendl; - - if (!stack->is_ready()) { - ldout(cct, 10) << __func__ << " Network Stack is not ready for bind yet - postponed" << dendl; - pending_bind_addr = bind_addr; - pending_bind = true; - lock.Unlock(); - return 0; - } - lock.Unlock(); // bind to a socket diff --git a/src/msg/async/AsyncMessenger.h b/src/msg/async/AsyncMessenger.h index 01af51104959..c234a70a442a 100644 --- a/src/msg/async/AsyncMessenger.h +++ b/src/msg/async/AsyncMessenger.h @@ -236,17 +236,6 @@ private: // maybe this should be protected by the lock? bool need_addr; - /** - * set to bind address if bind was called before NetworkStack was ready to - * bind - */ - entity_addr_t pending_bind_addr; - - /** - * false; set to true if a pending bind exists - */ - bool pending_bind = false; - /** * The following aren't lock-protected since you shouldn't be able to race * the only writers. diff --git a/src/msg/async/Stack.h b/src/msg/async/Stack.h index 3b7adca35da2..2ddfa8c6754f 100644 --- a/src/msg/async/Stack.h +++ b/src/msg/async/Stack.h @@ -287,6 +287,7 @@ class NetworkStack : public CephContext::ForkWatcher { protected: CephContext *cct; vector workers; + // Used to indicate whether thread started explicit NetworkStack(CephContext *c, const string &t); public: @@ -336,8 +337,6 @@ class NetworkStack : public CephContext::ForkWatcher { start(); } - virtual bool is_ready() { return true; }; - virtual void ready() { }; }; #endif //CEPH_MSG_ASYNC_STACK_H diff --git a/src/msg/async/rdma/RDMAStack.h b/src/msg/async/rdma/RDMAStack.h index 9043ed1db7b7..1585d65b26ab 100644 --- a/src/msg/async/rdma/RDMAStack.h +++ b/src/msg/async/rdma/RDMAStack.h @@ -198,8 +198,6 @@ class RDMAStack : public NetworkStack { RDMADispatcher *dispatcher; PerfCounters *perf_counter; - std::atomic fork_finished = {false}; - public: explicit RDMAStack(CephContext *cct, const string &t); virtual ~RDMAStack(); @@ -209,8 +207,5 @@ class RDMAStack : public NetworkStack { virtual void spawn_worker(unsigned i, std::function &&func) override; virtual void join_worker(unsigned i) override; RDMADispatcher *get_dispatcher() { return dispatcher; } - - virtual bool is_ready() override { return fork_finished.load(); }; - virtual void ready() override { fork_finished = true; }; }; #endif