Merge pull request #1839 from ceph/wip-8338

OSD: verify that client ops are targeted correctly in the current epoch

Reviewed-by: Samuel Just <sam.just@inktank.com>
This commit is contained in:
Gregory Farnum 2014-05-19 16:53:55 -07:00
commit 1383b649d7

View File

@ -7860,6 +7860,13 @@ void OSD::handle_op(OpRequestRef op, OSDMapRef osdmap)
return;
}
// check against current map too
if (!osdmap->have_pg_pool(pgid.pool()) ||
osdmap->get_pg_acting_role(pgid.pgid, whoami) < 0) {
dout(7) << "dropping; no longer have PG (or pool); client will retarget" << dendl;
return;
}
PG *pg = get_pg_or_queue_for_pg(pgid, op);
if (pg) {
op->send_map_update = share_map.should_send;