From: Jason Dillaman Date: Tue, 30 Jan 2018 02:12:10 +0000 (-0500) Subject: rbd-mirror: image deleter now handles clone v2 X-Git-Tag: v13.0.2~327^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=fb62296f6ead932d2572c36be6687c68cb7758a9;p=ceph.git rbd-mirror: image deleter now handles clone v2 Signed-off-by: Jason Dillaman --- diff --git a/src/tools/rbd_mirror/image_deleter/RemoveRequest.cc b/src/tools/rbd_mirror/image_deleter/RemoveRequest.cc index e411fa33ca9..6f10dd99ecd 100644 --- a/src/tools/rbd_mirror/image_deleter/RemoveRequest.cc +++ b/src/tools/rbd_mirror/image_deleter/RemoveRequest.cc @@ -117,6 +117,14 @@ void RemoveRequest::remove_image() { template void RemoveRequest::handle_remove_image(int r) { dout(10) << "r=" << r << dendl; + if (r == -ENOTEMPTY) { + // image must have clone v2 snapshot still associated to child + dout(10) << "snapshots still in-use" << dendl; + *m_error_result = ERROR_RESULT_RETRY_IMMEDIATELY; + finish(-EBUSY); + return; + } + if (r < 0 && r != -ENOENT) { derr << "error removing image " << m_image_id << " " << "(" << m_image_id << ") from local pool: " diff --git a/src/tools/rbd_mirror/image_deleter/SnapshotPurgeRequest.cc b/src/tools/rbd_mirror/image_deleter/SnapshotPurgeRequest.cc index c417d9f90e5..797dbdb9059 100644 --- a/src/tools/rbd_mirror/image_deleter/SnapshotPurgeRequest.cc +++ b/src/tools/rbd_mirror/image_deleter/SnapshotPurgeRequest.cc @@ -225,7 +225,12 @@ template void SnapshotPurgeRequest::handle_snap_remove(int r) { dout(10) << "r=" << r << dendl; - if (r < 0) { + if (r == -EBUSY) { + dout(10) << "snapshot in-use" << dendl; + m_ret_val = r; + close_image(); + return; + } else if (r < 0) { derr << "failed to remove snapshot: " << cpp_strerror(r) << dendl; m_ret_val = r; close_image();