diff options
author | Sage Weil <sage@inktank.com> | 2013-08-26 13:58:47 -0700 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-08-26 16:17:11 -0700 |
commit | 63dc9c6020a9127a8e34a9df5036601585372942 (patch) | |
tree | 17ec04c8636ec7464400b8ef4c6e8189b713c5ed | |
parent | dd8b4c550f71d591aeb9a3aa50acdc7a5793de81 (diff) | |
download | ceph-63dc9c6020a9127a8e34a9df5036601585372942.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 f2f6d1b4de2..8fffc4125d9 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -4302,7 +4302,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())) { @@ -5711,7 +5711,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) { @@ -6811,11 +6811,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_version(v); - 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) |