]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: add a process that handle Callback Arguments 30213/head
authorNancySu05 <su_nan@inspur.com>
Tue, 13 Aug 2019 03:02:10 +0000 (11:02 +0800)
committerNathan Cutler <ncutler@suse.com>
Tue, 1 Oct 2019 13:50:23 +0000 (15:50 +0200)
in C_AckMarkedDown,we add a process that handle _finish(int) Callback Arguments

Fixes: https://tracker.ceph.com/issues/41217
Signed-off-by: NancySu05 <su_nan@inspur.com>
(cherry picked from commit 57e8411578d3edd4cd4ff2a93d57407451a6d219)

Conflicts:
src/mon/OSDMonitor.cc
- MOSDMarkMeDown ctor takes fewer arguments in mimic
- no "ceph_abort_msgf" function in mimic

src/mon/OSDMonitor.cc

index 6d7d08f4eeaba3e714a5b2cdb58682c35bafc7e7..fbd85dc5a9f6a225096d3fd5f476b173f9f16688 100644 (file)
@@ -2275,15 +2275,22 @@ public:
     MonOpRequestRef op)
     : C_MonOp(op), osdmon(osdmon) {}
 
-  void _finish(int) override {
-    MOSDMarkMeDown *m = static_cast<MOSDMarkMeDown*>(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<MOSDMarkMeDown*>(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 {
   }