}
}
-bool PG::op_has_sufficient_caps(OpRequestRef op)
+bool PG::op_has_sufficient_caps(OpRequestRef& op)
{
// only check MOSDOp
if (op->get_req()->get_type() != CEPH_MSG_OSD_OP)
}
}
-void PG::queue_op(OpRequestRef op)
+void PG::queue_op(OpRequestRef& op)
{
Mutex::Locker l(map_lock);
if (!waiting_for_map.empty()) {
return out;
}
-bool PG::can_discard_op(OpRequestRef op)
+bool PG::can_discard_op(OpRequestRef& op)
{
MOSDOp *m = static_cast<MOSDOp*>(op->get_req());
if (OSD::op_is_discardable(m)) {
}
template<typename T, int MSGTYPE>
-bool PG::can_discard_replica_op(OpRequestRef op)
+bool PG::can_discard_replica_op(OpRequestRef& op)
{
T *m = static_cast<T *>(op->get_req());
assert(m->get_header().type == MSGTYPE);
}
-bool PG::can_discard_request(OpRequestRef op)
+bool PG::can_discard_request(OpRequestRef& op)
{
switch (op->get_req()->get_type()) {
case CEPH_MSG_OSD_OP:
OSDMapRef last_persisted_osdmap_ref;
PGPool pool;
- void queue_op(OpRequestRef op);
+ void queue_op(OpRequestRef& op);
void take_op_map_waiters();
void update_osdmap_ref(OSDMapRef newmap) {
OSDMapRef osdmap);
// OpRequest queueing
- bool can_discard_op(OpRequestRef op);
+ bool can_discard_op(OpRequestRef& op);
bool can_discard_scan(OpRequestRef op);
bool can_discard_backfill(OpRequestRef op);
- bool can_discard_request(OpRequestRef op);
+ bool can_discard_request(OpRequestRef& op);
template<typename T, int MSGTYPE>
- bool can_discard_replica_op(OpRequestRef op);
+ bool can_discard_replica_op(OpRequestRef& op);
static bool op_must_wait_for_map(OSDMapRef curmap, OpRequestRef op);
return e <= get_osdmap()->get_epoch();
}
- bool op_has_sufficient_caps(OpRequestRef op);
+ bool op_has_sufficient_caps(OpRequestRef& op);
// recovery bits
// abstract bits
virtual void do_request(
- OpRequestRef op,
+ OpRequestRef& op,
ThreadPool::TPHandle &handle
) = 0;
- virtual void do_op(OpRequestRef op) = 0;
+ virtual void do_op(OpRequestRef& op) = 0;
virtual void do_sub_op(OpRequestRef op) = 0;
virtual void do_sub_op_reply(OpRequestRef op) = 0;
virtual void do_scan(
}
void ReplicatedPG::do_request(
- OpRequestRef op,
+ OpRequestRef& op,
ThreadPool::TPHandle &handle)
{
if (!op_has_sufficient_caps(op)) {
* pg lock will be held (if multithreaded)
* osd_lock NOT held.
*/
-void ReplicatedPG::do_op(OpRequestRef op)
+void ReplicatedPG::do_op(OpRequestRef& op)
{
MOSDOp *m = static_cast<MOSDOp*>(op->get_req());
assert(m->get_header().type == CEPH_MSG_OSD_OP);
bufferlist& odata);
void do_request(
- OpRequestRef op,
+ OpRequestRef& op,
ThreadPool::TPHandle &handle);
- void do_op(OpRequestRef op);
+ void do_op(OpRequestRef& op);
bool pg_op_must_wait(MOSDOp *op);
void do_pg_op(OpRequestRef op);
void do_sub_op(OpRequestRef op);