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>
This commit is contained in:
Sage Weil 2013-01-25 09:25:28 -08:00
parent a7059eb3f3
commit 76705ace2e

View File

@ -3375,6 +3375,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;
}