]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
PeerReplayer: added sync type
authorJos Collin <jcollin@redhat.com>
Tue, 13 Feb 2024 13:37:07 +0000 (19:07 +0530)
committerJos Collin <jcollin@redhat.com>
Tue, 13 Feb 2024 13:37:38 +0000 (19:07 +0530)
Signed-off-by: Jos Collin <jcollin@redhat.com>
src/tools/cephfs_mirror/PeerReplayer.cc
src/tools/cephfs_mirror/PeerReplayer.h

index bd47046bb12184da66f2c9a74aeccf4bcd91f6f2..f5e18cee303dce77e2d2799b5b93808dfec1c92f 100644 (file)
@@ -1208,6 +1208,12 @@ int PeerReplayer::do_synchronize(const std::string &dir_root, const Snapshot &cu
 
   std::stack<SyncEntry> sync_stack;
   sync_stack.emplace(SyncEntry(".", tdirp, tstx));
+  if (prev) {
+    set_sync_type(dir_root, "local_scan");
+  } else {
+    set_sync_type(dir_root, "remote_scan");
+  }
+
   while (!sync_stack.empty()) {
     if (should_backoff(dir_root, &r)) {
       dout(0) << ": backing off r=" << r << dendl;
@@ -1546,6 +1552,7 @@ void PeerReplayer::peer_status(Formatter *f) {
       f->dump_string("state", "idle");
     } else {
       f->dump_string("state", "syncing");
+      f->dump_string("sync_type", sync_stat.type);
       f->open_object_section("current_sycning_snap");
       f->dump_unsigned("id", (*sync_stat.current_syncing_snap).first);
       f->dump_string("name", (*sync_stat.current_syncing_snap).second);
index 0511d154a759d068fcc87bd5a8db890b5c87bb7e..63f5e830864479d4712177369f2ac6838d65c05b 100644 (file)
@@ -145,6 +145,7 @@ private:
     uint64_t nr_failures = 0; // number of consecutive failures
     boost::optional<time> last_failed; // lat failed timestamp
     bool failed = false; // hit upper cap for consecutive failures
+    std::string type;
     boost::optional<std::pair<uint64_t, std::string>> last_synced_snap;
     boost::optional<std::pair<uint64_t, std::string>> current_syncing_snap;
     uint64_t synced_snap_count = 0;
@@ -222,6 +223,12 @@ private:
     ++sync_stat.synced_snap_count;
   }
 
+  void set_sync_type(const std::string &dir_root, const std::string &type) {
+    std::scoped_lock locker(m_lock);
+    auto &sync_stat = m_snap_sync_stats.at(dir_root);
+    sync_stat.type = type;
+  }
+
   bool should_backoff(const std::string &dir_root, int *retval) {
     if (m_fs_mirror->is_blocklisted()) {
       *retval = -EBLOCKLISTED;