From: Joao Eduardo Luis Date: Wed, 17 Jun 2015 10:00:19 +0000 (+0100) Subject: mon: PGMonitor: implement C_MonOp on op-related callback contexts X-Git-Tag: v9.1.0~535^2~27 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=5ca13692bb78f2336bcb1a62cb1ce6168fb33059;p=ceph.git mon: PGMonitor: implement C_MonOp on op-related callback contexts These contexts deal with MonOpRequests, and we need to track their life cycle; use C_MonOp to mark events when the callbacks are woken up for some reason. Signed-off-by: Joao Eduardo Luis --- diff --git a/src/mon/PGMonitor.h b/src/mon/PGMonitor.h index 7efd8a9fe1d..7e1602522ee 100644 --- a/src/mon/PGMonitor.h +++ b/src/mon/PGMonitor.h @@ -82,22 +82,21 @@ private: bool prepare_pg_stats(MonOpRequestRef op); void _updated_stats(MonOpRequestRef op, MonOpRequestRef ack_op); - struct C_Stats : public Context { + struct C_Stats : public C_MonOp { PGMonitor *pgmon; - MonOpRequestRef stats_op; MonOpRequestRef stats_op_ack; entity_inst_t who; C_Stats(PGMonitor *p, MonOpRequestRef op, MonOpRequestRef op_ack) - : pgmon(p), stats_op(op), stats_op_ack(op_ack) {} - void finish(int r) { + : C_MonOp(op), pgmon(p), stats_op_ack(op_ack) {} + void _finish(int r) { if (r >= 0) { - pgmon->_updated_stats(stats_op, stats_op_ack); + pgmon->_updated_stats(op, stats_op_ack); } else if (r == -ECANCELED) { return; } else if (r == -EAGAIN) { - pgmon->dispatch(stats_op); + pgmon->dispatch(op); } else { assert(0 == "bad C_Stats return value"); }