for (auto &peer : m_mirror_peer_uuids) {
std::shared_lock image_locker{m_image_ctx->image_lock};
size_t count = 0;
- uint64_t prev_snap_id = 0;
+ uint64_t unlink_snap_id = 0;
for (auto &snap_it : m_image_ctx->snap_info) {
auto info = boost::get<cls::rbd::MirrorSnapshotNamespace>(
&snap_it.second.snap_namespace);
if (info->state != cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY) {
// reset counters -- we count primary snapshots after the last promotion
count = 0;
- prev_snap_id = 0;
+ unlink_snap_id = 0;
continue;
}
count++;
- if (count == max_snapshots - 1) {
- prev_snap_id = snap_it.first;
- } else if (count > max_snapshots) {
+ if (count == 3) {
+ unlink_snap_id = snap_it.first;
+ }
+ if (count > max_snapshots) {
peer_uuid = peer;
- snap_id = prev_snap_id;
+ snap_id = unlink_snap_id;
break;
}
}
expect_create_snapshot(mock_image_ctx, 0);
MockUnlinkPeerRequest mock_unlink_peer_request;
auto it = mock_image_ctx.snap_info.rbegin();
- auto snap_id = (++it)->first;
+ auto snap_id = it->first;
expect_unlink_peer(mock_image_ctx, mock_unlink_peer_request, snap_id, "uuid",
0);
C_SaferCond ctx;
ASSERT_EQ(0, image.snap_list(snaps1));
ASSERT_EQ(3U, snaps1.size());
ASSERT_EQ(snaps1[0].id, snaps[0].id);
- ASSERT_EQ(snaps1[1].id, snaps[2].id);
+ ASSERT_EQ(snaps1[1].id, snaps[1].id);
ASSERT_EQ(snaps1[2].id, snap_id);
librbd::snap_namespace_type_t snap_ns_type;