From 6d5334928292576c28329db6f875c356a9965019 Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Fri, 8 Nov 2013 09:35:54 -0800 Subject: [PATCH] OSD: pass osdmap to handle_op and handle_replica_op We need a map to process them, and we don't want to take the OSD lock to access one. (And we can't just use the service because we need all processing of a message to be done with the same map.) Signed-off-by: Samuel Just Signed-off-by: Greg Farnum --- src/osd/OSD.cc | 28 ++++++++++++++-------------- src/osd/OSD.h | 4 ++-- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 75d863edfd0..df037d297c6 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -4956,42 +4956,42 @@ void OSD::dispatch_op(OpRequestRef op) // 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(op); + handle_replica_op(op, osdmap); break; case MSG_OSD_SUBOPREPLY: - handle_replica_op(op); + handle_replica_op(op, osdmap); break; case MSG_OSD_PG_PUSH: - handle_replica_op(op); + handle_replica_op(op, osdmap); break; case MSG_OSD_PG_PULL: - handle_replica_op(op); + handle_replica_op(op, osdmap); break; case MSG_OSD_PG_PUSH_REPLY: - handle_replica_op(op); + handle_replica_op(op, osdmap); break; case MSG_OSD_PG_SCAN: - handle_replica_op(op); + handle_replica_op(op, osdmap); break; case MSG_OSD_PG_BACKFILL: - handle_replica_op(op); + handle_replica_op(op, osdmap); break; case MSG_OSD_EC_WRITE: - handle_replica_op(op); + handle_replica_op(op, osdmap); break; case MSG_OSD_EC_WRITE_REPLY: - handle_replica_op(op); + handle_replica_op(op, osdmap); break; case MSG_OSD_EC_READ: - handle_replica_op(op); + handle_replica_op(op, osdmap); break; case MSG_OSD_EC_READ_REPLY: - handle_replica_op(op); + handle_replica_op(op, osdmap); break; } } @@ -7373,7 +7373,7 @@ void OSDService::handle_misdirected_op(PG *pg, OpRequestRef op) reply_op_error(op, -ENXIO); } -void OSD::handle_op(OpRequestRef op) +void OSD::handle_op(OpRequestRef op, OSDMapRef osdmap) { MOSDOp *m = static_cast(op->get_req()); assert(m->get_header().type == CEPH_MSG_OSD_OP); @@ -7513,7 +7513,7 @@ void OSD::handle_op(OpRequestRef op) } template -void OSD::handle_replica_op(OpRequestRef op) +void OSD::handle_replica_op(OpRequestRef op, OSDMapRef osdmap) { T *m = static_cast(op->get_req()); assert(m->get_header().type == MSGTYPE); diff --git a/src/osd/OSD.h b/src/osd/OSD.h index 8702df16b20..90f225d3dc7 100644 --- a/src/osd/OSD.h +++ b/src/osd/OSD.h @@ -1978,10 +1978,10 @@ public: 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 - 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); -- 2.47.3