diff --git a/scripts/vm/hypervisor/xenserver/vmops b/scripts/vm/hypervisor/xenserver/vmops index 0de989a9cf6..06b0d00af6f 100755 --- a/scripts/vm/hypervisor/xenserver/vmops +++ b/scripts/vm/hypervisor/xenserver/vmops @@ -709,6 +709,9 @@ def makedirs(path): try: os.makedirs(path) except OSError, (errno, strerror): + umount(path) + if os.path.isdir(path): + return errMsg = "OSError while creating " + path + " with errno: " + str(errno) + " and strerr: " + strerror util.SMlog(errMsg) raise xs_errors.XenError(errMsg) diff --git a/server/src/com/cloud/async/executor/CreateSnapshotExecutor.java b/server/src/com/cloud/async/executor/CreateSnapshotExecutor.java index 4fa8b75d26b..0e0fc9537dd 100644 --- a/server/src/com/cloud/async/executor/CreateSnapshotExecutor.java +++ b/server/src/com/cloud/async/executor/CreateSnapshotExecutor.java @@ -68,15 +68,16 @@ public class CreateSnapshotExecutor extends BaseAsyncJobExecutor { try { SnapshotVO snapshot = snapshotManager.createSnapshot(userId, param.getVolumeId(), param.getPolicyIds()); - Snapshot.Status status = snapshot.getStatus(); - if (snapshot != null && ( status == Snapshot.Status.CreatedOnPrimary - || status == Snapshot.Status.BackedUp) ) { + if (snapshot != null) { + Snapshot.Status status = snapshot.getStatus(); snapshotId = snapshot.getId(); if( status == Snapshot.Status.CreatedOnPrimary ) { asyncMgr.updateAsyncJobStatus(jobId, BaseCmd.PROGRESS_INSTANCE_CREATED, snapshotId); backedUp = snapshotManager.backupSnapshotToSecondaryStorage(userId, snapshot); - } else { + } else if ( status == Snapshot.Status.BackedUp ){ backedUp = true; + } else { + resultObject = "Snapshot: " + snapshotId + " creation failed, the status is " + status.toString(); } if (backedUp) { result = AsyncJobResult.STATUS_SUCCEEDED;