From: NancySu05 Date: Tue, 13 Aug 2019 03:02:10 +0000 (+0800) Subject: mon: add a process that handle Callback Arguments X-Git-Tag: v13.2.7~66^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ff6a2e26b804ef3c2d264b3b0894c73d4f7f2da1;p=ceph.git mon: add a process that handle Callback Arguments in C_AckMarkedDown,we add a process that handle _finish(int) Callback Arguments Fixes: https://tracker.ceph.com/issues/41217 Signed-off-by: NancySu05 (cherry picked from commit 57e8411578d3edd4cd4ff2a93d57407451a6d219) Conflicts: src/mon/OSDMonitor.cc - MOSDMarkMeDown ctor takes fewer arguments in mimic - no "ceph_abort_msgf" function in mimic --- diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index 6d7d08f4eeab..fbd85dc5a9f6 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -2275,15 +2275,22 @@ public: MonOpRequestRef op) : C_MonOp(op), osdmon(osdmon) {} - void _finish(int) override { - MOSDMarkMeDown *m = static_cast(op->get_req()); - osdmon->mon->send_reply( - op, - new MOSDMarkMeDown( - m->fsid, - m->get_target(), - m->get_epoch(), - false)); // ACK itself does not request an ack + void _finish(int r) override { + if (r == 0) { + MOSDMarkMeDown *m = static_cast(op->get_req()); + osdmon->mon->send_reply( + op, + new MOSDMarkMeDown( + m->fsid, + m->get_target(), + m->get_epoch(), + false)); // ACK itself does not request an ack + } else if (r == -EAGAIN) { + osdmon->dispatch(op); + } else { + lgeneric_derr(osdmon->cct) << "C_AckMarkedDown: unknown result" << r << dendl; + ceph_abort(); + } } ~C_AckMarkedDown() override { }