From 0615d4e6a597cf0c4fd1715bf93588581b6cf8cd Mon Sep 17 00:00:00 2001 From: Wido den Hollander Date: Thu, 10 Apr 2014 05:28:56 +0200 Subject: [PATCH] rbd: Check if a snapshot is protected before trying to unprotect Otherwise a RBDException will be thrown with the message that the snapshot isn't protected. modified: plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java --- .../hypervisor/kvm/storage/LibvirtStorageAdaptor.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java index 61d90e9b15d..296f60aa1cd 100644 --- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java +++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java @@ -762,8 +762,12 @@ public class LibvirtStorageAdaptor implements StorageAdaptor { s_logger.debug("Fetching list of snapshots of RBD image " + pool.getSourceDir() + "/" + uuid); List snaps = image.snapList(); for (RbdSnapInfo snap : snaps) { - s_logger.debug("Unprotecting snapshot " + pool.getSourceDir() + "/" + uuid + "@" + snap.name); - image.snapUnprotect(snap.name); + if (image.snapIsProtected(snap.name)) { + s_logger.debug("Unprotecting snapshot " + pool.getSourceDir() + "/" + uuid + "@" + snap.name); + image.snapUnprotect(snap.name); + } else { + s_logger.debug("Snapshot " + pool.getSourceDir() + "/" + uuid + "@" + snap.name + " is not protected."); + } s_logger.debug("Removing snapshot " + pool.getSourceDir() + "/" + uuid + "@" + snap.name); image.snapRemove(snap.name); }