diff options
author | Sage Weil <sage@inktank.com> | 2013-08-26 13:58:47 -0700 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-08-30 16:54:32 -0700 |
commit | a6b04c5d8ba043727a2e39a62e9d4126485bcfeb (patch) | |
tree | e076559129c29e6d7e0140f8eec40acfa61f80a0 | |
parent | 20b25c6f65c4420340c9944d0dccd81db0f37635 (diff) | |
download | ceph-a6b04c5d8ba043727a2e39a62e9d4126485bcfeb.tar.gz |
osd: discriminate based on connection messenger, not peer type
Replace ->get_source().is_osd() checks and instead see if it is the
cluster_messenger so that we do not confuse ourselves when we get
legit requests from other OSDs on our public interface.
Signed-off-by: Sage Weil <sage@inktank.com>
-rw-r--r-- | src/osd/OSD.cc | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 5bde23335ad..aac0bffe212 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -4306,7 +4306,7 @@ bool OSD::_share_map_incoming(entity_name_t name, Connection *con, epoch_t epoch } // does peer have old map? - if (name.is_osd() && + if (con->get_messenger() == cluster_messenger && osdmap->is_up(name.num()) && (osdmap->get_cluster_addr(name.num()) == con->get_peer_addr() || osdmap->get_hb_back_addr(name.num()) == con->get_peer_addr())) { @@ -5715,7 +5715,7 @@ bool OSD::require_same_or_newer_map(OpRequestRef op, epoch_t epoch) } // ok, our map is same or newer.. do they still exist? - if (m->get_source().is_osd()) { + if (m->get_connection()->get_messenger() == cluster_messenger) { int from = m->get_source().num(); if (!osdmap->have_inst(from) || osdmap->get_cluster_addr(from) != m->get_source_inst().addr) { @@ -6816,11 +6816,8 @@ void OSDService::reply_op_error(OpRequestRef op, int err, eversion_t v, flags = m->get_flags() & (CEPH_OSD_FLAG_ACK|CEPH_OSD_FLAG_ONDISK); MOSDOpReply *reply = new MOSDOpReply(m, err, osdmap->get_epoch(), flags); - Messenger *msgr = client_messenger; reply->set_reply_versions(v, uv); - if (m->get_source().is_osd()) - msgr = cluster_messenger; - msgr->send_message(reply, m->get_connection()); + m->get_connection()->get_messenger()->send_message(reply, m->get_connection()); } void OSDService::handle_misdirected_op(PG *pg, OpRequestRef op) |