// client ops
case CEPH_MSG_OSD_OP:
- handle_op(op);
+ handle_op(op, osdmap);
break;
// for replication etc.
case MSG_OSD_SUBOP:
- handle_replica_op<MOSDSubOp, MSG_OSD_SUBOP>(op);
+ handle_replica_op<MOSDSubOp, MSG_OSD_SUBOP>(op, osdmap);
break;
case MSG_OSD_SUBOPREPLY:
- handle_replica_op<MOSDSubOpReply, MSG_OSD_SUBOPREPLY>(op);
+ handle_replica_op<MOSDSubOpReply, MSG_OSD_SUBOPREPLY>(op, osdmap);
break;
case MSG_OSD_PG_PUSH:
- handle_replica_op<MOSDPGPush, MSG_OSD_PG_PUSH>(op);
+ handle_replica_op<MOSDPGPush, MSG_OSD_PG_PUSH>(op, osdmap);
break;
case MSG_OSD_PG_PULL:
- handle_replica_op<MOSDPGPull, MSG_OSD_PG_PULL>(op);
+ handle_replica_op<MOSDPGPull, MSG_OSD_PG_PULL>(op, osdmap);
break;
case MSG_OSD_PG_PUSH_REPLY:
- handle_replica_op<MOSDPGPushReply, MSG_OSD_PG_PUSH_REPLY>(op);
+ handle_replica_op<MOSDPGPushReply, MSG_OSD_PG_PUSH_REPLY>(op, osdmap);
break;
case MSG_OSD_PG_SCAN:
- handle_replica_op<MOSDPGScan, MSG_OSD_PG_SCAN>(op);
+ handle_replica_op<MOSDPGScan, MSG_OSD_PG_SCAN>(op, osdmap);
break;
case MSG_OSD_PG_BACKFILL:
- handle_replica_op<MOSDPGBackfill, MSG_OSD_PG_BACKFILL>(op);
+ handle_replica_op<MOSDPGBackfill, MSG_OSD_PG_BACKFILL>(op, osdmap);
break;
case MSG_OSD_EC_WRITE:
- handle_replica_op<MOSDECSubOpWrite, MSG_OSD_EC_WRITE>(op);
+ handle_replica_op<MOSDECSubOpWrite, MSG_OSD_EC_WRITE>(op, osdmap);
break;
case MSG_OSD_EC_WRITE_REPLY:
- handle_replica_op<MOSDECSubOpWriteReply, MSG_OSD_EC_WRITE_REPLY>(op);
+ handle_replica_op<MOSDECSubOpWriteReply, MSG_OSD_EC_WRITE_REPLY>(op, osdmap);
break;
case MSG_OSD_EC_READ:
- handle_replica_op<MOSDECSubOpRead, MSG_OSD_EC_READ>(op);
+ handle_replica_op<MOSDECSubOpRead, MSG_OSD_EC_READ>(op, osdmap);
break;
case MSG_OSD_EC_READ_REPLY:
- handle_replica_op<MOSDECSubOpReadReply, MSG_OSD_EC_READ_REPLY>(op);
+ handle_replica_op<MOSDECSubOpReadReply, MSG_OSD_EC_READ_REPLY>(op, osdmap);
break;
}
}
reply_op_error(op, -ENXIO);
}
-void OSD::handle_op(OpRequestRef op)
+void OSD::handle_op(OpRequestRef op, OSDMapRef osdmap)
{
MOSDOp *m = static_cast<MOSDOp*>(op->get_req());
assert(m->get_header().type == CEPH_MSG_OSD_OP);
}
template<typename T, int MSGTYPE>
-void OSD::handle_replica_op(OpRequestRef op)
+void OSD::handle_replica_op(OpRequestRef op, OSDMapRef osdmap)
{
T *m = static_cast<T *>(op->get_req());
assert(m->get_header().type == MSGTYPE);
void handle_rep_scrub(MOSDRepScrub *m);
void handle_scrub(struct MOSDScrub *m);
void handle_osd_ping(class MOSDPing *m);
- void handle_op(OpRequestRef op);
+ void handle_op(OpRequestRef op, OSDMapRef osdmap);
template <typename T, int MSGTYPE>
- void handle_replica_op(OpRequestRef op);
+ void handle_replica_op(OpRequestRef op, OSDMapRef osdmap);
/// check if we can throw out op from a disconnected client
static bool op_is_discardable(class MOSDOp *m);