From 57e8411578d3edd4cd4ff2a93d57407451a6d219 Mon Sep 17 00:00:00 2001 From: NancySu05 Date: Tue, 13 Aug 2019 11:02:10 +0800 Subject: [PATCH] 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 --- src/mon/OSDMonitor.cc | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index 64430dc552933..d7aa48b03dc38 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -2542,16 +2542,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->target_osd, - m->target_addrs, - 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->target_osd, + m->target_addrs, + m->get_epoch(), + false)); // ACK itself does not request an ack + } else if (r == -EAGAIN) { + osdmon->dispatch(op); + } else { + ceph_abort_msgf("C_AckMarkedDown: unknown result %d", r); + } } ~C_AckMarkedDown() override { } -- 2.39.5