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-26 16:17:11 -0700
commit63dc9c6020a9127a8e34a9df5036601585372942 (patch)
tree17ec04c8636ec7464400b8ef4c6e8189b713c5ed
parentdd8b4c550f71d591aeb9a3aa50acdc7a5793de81 (diff)
downloadceph-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.cc9
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)