From c01c2fd52c2e0d3bf9cb984d6edb1b42f4d79c45 Mon Sep 17 00:00:00 2001 From: Kotresh HR Date: Tue, 9 Dec 2025 15:35:08 +0530 Subject: [PATCH] tools/cephfs_mirror: Mark crawl finished After entry operations are synced and stack is empty, mark the crawl as finished so the data sync threads' wait logic works correctly and doesn't indefinitely wait. Fixes: https://tracker.ceph.com/issues/73452 Signed-off-by: Kotresh HR --- src/tools/cephfs_mirror/PeerReplayer.cc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/tools/cephfs_mirror/PeerReplayer.cc b/src/tools/cephfs_mirror/PeerReplayer.cc index 4392fe588b9..094592079a6 100644 --- a/src/tools/cephfs_mirror/PeerReplayer.cc +++ b/src/tools/cephfs_mirror/PeerReplayer.cc @@ -1655,6 +1655,9 @@ void PeerReplayer::SnapDiffSync::finish_sync() { m_sync_stack.pop(); } + + // Crawl and entry operations are done syncing here. So mark crawl finished here + mark_crawl_finished(); } PeerReplayer::RemoteSync::RemoteSync(MountRef local, MountRef remote, FHandles *fh, @@ -1801,6 +1804,9 @@ void PeerReplayer::RemoteSync::finish_sync() { m_sync_stack.pop(); } + + // Crawl and entry operations are done syncing here. So mark stack finished here + mark_crawl_finished(); } int PeerReplayer::do_synchronize(const std::string &dir_root, const Snapshot ¤t, -- 2.47.3