summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-01-25 09:25:28 -0800
committerSage Weil <sage@inktank.com>2013-02-04 22:06:09 -0800
commit4cb28b6ed5a702fdac99b8ec71233ef7f877a7a2 (patch)
treed8872e8b235561c1682108ab1ee1402420d83834
parente4f7ff8c288eac8a8b57382f11a4b6f93682315a (diff)
downloadceph-4cb28b6ed5a702fdac99b8ec71233ef7f877a7a2.tar.gz
osd: requeue osdmaps on heartbeat connections for cluster connection
If we receive an OSDMap on the cluster connection, requeue it for the cluster messenger, and process it there where we normally do. This avoids any concerns about locking and ordering rules. Signed-off-by: Sage Weil <sage@inktank.com> (cherry picked from commit 76705ace2e9767939aa9acf5d9257c800f838854)
-rw-r--r--src/osd/OSD.cc8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc
index a125a64ced9..a8925b5b3d7 100644
--- a/src/osd/OSD.cc
+++ b/src/osd/OSD.cc
@@ -3224,6 +3224,14 @@ bool OSD::heartbeat_dispatch(Message *m)
handle_osd_ping((MOSDPing*)m);
break;
+ case CEPH_MSG_OSD_MAP:
+ {
+ Connection *self = cluster_messenger->get_loopback_connection();
+ cluster_messenger->send_message(m, self);
+ self->put();
+ }
+ break;
+
default:
return false;
}