From b872078e670eb76f6c548f2033009d2420161a09 Mon Sep 17 00:00:00 2001 From: Jason Dillaman Date: Thu, 16 Nov 2017 15:39:24 -0500 Subject: [PATCH] librbd: ensure deep-copy can remove an unprotected snapshot Signed-off-by: Jason Dillaman --- src/librbd/deep_copy/SnapshotCopyRequest.cc | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/librbd/deep_copy/SnapshotCopyRequest.cc b/src/librbd/deep_copy/SnapshotCopyRequest.cc index 00327194d03..517b789faa6 100644 --- a/src/librbd/deep_copy/SnapshotCopyRequest.cc +++ b/src/librbd/deep_copy/SnapshotCopyRequest.cc @@ -189,6 +189,17 @@ void SnapshotCopyRequest::handle_snap_unprotect(int r) { finish(r); return; } + + { + // avoid the need to refresh to delete the newly unprotected snapshot + RWLock::RLocker snap_locker(m_dst_image_ctx->snap_lock); + auto snap_info_it = m_dst_image_ctx->snap_info.find(m_prev_snap_id); + if (snap_info_it != m_dst_image_ctx->snap_info.end()) { + snap_info_it->second.protection_status = + RBD_PROTECTION_STATUS_UNPROTECTED; + } + } + if (handle_cancellation()) { return; } -- 2.39.5