From 5d44d5993a7866561e92e34ca20be641075686ed Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 14 Dec 2010 14:28:26 -0800 Subject: [PATCH] msgr: mark down by Connection* Signed-off-by: Sage Weil --- src/msg/Messenger.h | 1 + src/msg/SimpleMessenger.cc | 17 +++++++++++++++++ src/msg/SimpleMessenger.h | 1 + 3 files changed, 19 insertions(+) diff --git a/src/msg/Messenger.h b/src/msg/Messenger.h index 873ef671dc6e4..4b806468f5464 100644 --- a/src/msg/Messenger.h +++ b/src/msg/Messenger.h @@ -156,6 +156,7 @@ protected: virtual int send_keepalive(const entity_inst_t& dest) = 0; virtual void mark_down(const entity_addr_t& a) = 0; + virtual void mark_down(Connection *con) = 0; virtual Connection *get_connection(const entity_inst_t& dest) = 0; diff --git a/src/msg/SimpleMessenger.cc b/src/msg/SimpleMessenger.cc index ebaae0698529f..cc8916bb051e3 100644 --- a/src/msg/SimpleMessenger.cc +++ b/src/msg/SimpleMessenger.cc @@ -2735,6 +2735,23 @@ void SimpleMessenger::mark_down(const entity_addr_t& addr) lock.Unlock(); } +void SimpleMessenger::mark_down(Connection *con) +{ + lock.Lock(); + Pipe *p = (Pipe *)con->get_pipe(); + if (p) { + dout(1) << "mark_down " << con << " -- " << p << dendl; + p->unregister_pipe(); + p->pipe_lock.Lock(); + p->stop(); + p->pipe_lock.Unlock(); + p->put(); + } else { + dout(1) << "mark_down " << con << " -- pipe dne" << dendl; + } + lock.Unlock(); +} + void SimpleMessenger::learned_addr(entity_addr_t peer_addr_for_me) { lock.Lock(); diff --git a/src/msg/SimpleMessenger.h b/src/msg/SimpleMessenger.h index 5f1b93739636a..9196c190f9e15 100644 --- a/src/msg/SimpleMessenger.h +++ b/src/msg/SimpleMessenger.h @@ -471,6 +471,7 @@ private: const entity_addr_t &get_ms_addr() { return ms_addr; } void mark_down(const entity_addr_t& addr); + void mark_down(Connection *con); void mark_down_all(); // reaper -- 2.39.5