summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-08-26 13:58:47 -0700
committerSage Weil <sage@inktank.com>2013-08-30 16:54:32 -0700
commita6b04c5d8ba043727a2e39a62e9d4126485bcfeb (patch)
treee076559129c29e6d7e0140f8eec40acfa61f80a0
parent20b25c6f65c4420340c9944d0dccd81db0f37635 (diff)
downloadceph-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.cc9
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)