From b95df4a63b82cba7db80a0cefc5287f3f68d98a3 Mon Sep 17 00:00:00 2001 From: Prasanna Kumar Kalever Date: Wed, 12 Feb 2025 19:54:44 +0530 Subject: [PATCH] rbd_mirror: fix resync failure Steps to reproduce: $ rbd --cluster site-b mirror group promote test_pool/test_group --force $ rbd --cluster site-a mirror group demote test_pool/test_group $ rbd --cluster site-a mirror group resync test_pool/test_group $ rbd --cluster site-b mirror group status test_pool/test_group The group snapshots are are not re-syncing. And the group status shows image snap as syncing always. fixes: issue#11 Signed-off-by: Prasanna Kumar Kalever --- src/tools/rbd_mirror/group_replayer/BootstrapRequest.cc | 1 + src/tools/rbd_mirror/group_replayer/Replayer.cc | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/tools/rbd_mirror/group_replayer/BootstrapRequest.cc b/src/tools/rbd_mirror/group_replayer/BootstrapRequest.cc index 2a430c0f44025..84ef18b54cb96 100644 --- a/src/tools/rbd_mirror/group_replayer/BootstrapRequest.cc +++ b/src/tools/rbd_mirror/group_replayer/BootstrapRequest.cc @@ -123,6 +123,7 @@ void BootstrapRequest::send() { if (r < 0 && r != -ENOENT) { derr << "failed reading metadata: " << cpp_strerror(r) << dendl; } else if (r == 0) { + dout(10) << "local group resync requested" << dendl; *m_resync_requested = true; } } diff --git a/src/tools/rbd_mirror/group_replayer/Replayer.cc b/src/tools/rbd_mirror/group_replayer/Replayer.cc index b9a3084e97680..3c45a83d8cf97 100644 --- a/src/tools/rbd_mirror/group_replayer/Replayer.cc +++ b/src/tools/rbd_mirror/group_replayer/Replayer.cc @@ -538,7 +538,9 @@ void Replayer::scan_for_unsynced_group_snapshots() { } auto prev_remote_snap_ns = std::get_if( &prev_remote_snap->snapshot_namespace); - if (prev_remote_snap_ns && prev_remote_snap_ns->is_demoted()) { + if (prev_remote_snap_ns && + (prev_remote_snap_ns->state != cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY || + prev_remote_snap_ns->state != cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY_DEMOTED)) { break; } } -- 2.39.5