]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/osd: implement BackfillListener::enqueue_push().
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Tue, 12 May 2020 14:46:14 +0000 (16:46 +0200)
committerRadoslaw Zarzynski <rzarzyns@redhat.com>
Mon, 13 Jul 2020 14:25:30 +0000 (16:25 +0200)
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
src/crimson/osd/backfill_state.h
src/crimson/osd/pg_recovery.cc
src/crimson/osd/replicated_recovery_backend.cc

index 58b307b32fb686543f93835c6df4e96ddeede404..96ae2482af7b017e9338964897f7dadc76c9b30f 100644 (file)
@@ -48,6 +48,9 @@ struct BackfillState {
     // for tracking replicas.
     hobject_t object;
     pg_stat_t stat;
+    ObjectPushed(hobject_t object)
+      : object(std::move(object)) {
+    }
   };
 
   struct Triggered : sc::event<Triggered> {
index ed7700183954c4e979bca50b0c126e24801e99f7..74f20a0bd83652716a66e98d9bb1deb53350dd26 100644 (file)
@@ -453,7 +453,17 @@ void PGRecovery::enqueue_push(
   const hobject_t& obj,
   const eversion_t& v)
 {
-  ceph_abort_msg("Not implemented");
+  logger().debug("{}: target={} obj={} v={}",
+                 __func__, target, obj, v);
+  std::ignore = pg->get_recovery_backend()->recover_object(obj, v).\
+  handle_exception([] (auto) {
+    ceph_abort_msg("got exception on backfill's push");
+    return seastar::make_ready_future<>();
+  }).then([this, obj] {
+    logger().debug("enqueue_push:{}", __func__);
+    using BackfillState = crimson::osd::BackfillState;
+    start_backfill_recovery(BackfillState::ObjectPushed(std::move(obj)));
+  });
 }
 
 void PGRecovery::enqueue_drop(
index 8f60ab61e8ac3a7f7bbb071f061d7c9065ef5432..6861171d68cda64db82559fc2e84287856f3b9f6 100644 (file)
@@ -84,6 +84,8 @@ seastar::future<> ReplicatedRecoveryBackend::recover_object(
              return seastar::make_ready_future<>();
            })
          );
+       } else {
+         logger().debug("recover_object: already has obc!");
        }
        return seastar::now();
       }().then([this, soid, need, &pops, &shards] {