From 0757bd5ad50a62b174a7797b3a1180dd507d4b9d Mon Sep 17 00:00:00 2001 From: sjyu1 <93505580+sjyu1@users.noreply.github.com> Date: Wed, 15 Apr 2026 11:15:39 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=EB=94=94=EC=8A=A4=ED=81=AC=EC=97=B0?= =?UTF-8?q?=EA=B2=B0=20=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java index 4f8e6efee47d..a3f87eac7776 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java @@ -1424,7 +1424,7 @@ protected synchronized void attachOrDetachDisk(final Connect conn, final boolean throws LibvirtException, InternalErrorException { attachOrDetachDisk(conn, attach, vmName, attachingDisk, devId, serial, bytesReadRate, bytesReadRateMax, bytesReadRateMaxLength, bytesWriteRate, bytesWriteRateMax, bytesWriteRateMaxLength, iopsReadRate, iopsReadRateMax, iopsReadRateMaxLength, iopsWriteRate, - iopsWriteRateMax, iopsWriteRateMaxLength, cacheMode, encryptDetails, provider, krbdpath, shareable, kvdoEnable, details, controllerInfo); + iopsWriteRateMax, iopsWriteRateMaxLength, cacheMode, encryptDetails, provider, krbdpath, shareable, kvdoEnable, 0l, details, controllerInfo); } /** From fb5cd3699752ca81dcb0fbafb86f1d377db85d44 Mon Sep 17 00:00:00 2001 From: sjyu1 <93505580+sjyu1@users.noreply.github.com> Date: Wed, 15 Apr 2026 16:00:46 +0900 Subject: [PATCH 2/2] Update UserVmManagerImpl.java --- .../java/com/cloud/vm/UserVmManagerImpl.java | 41 ++++--------------- 1 file changed, 8 insertions(+), 33 deletions(-) diff --git a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java index 94581a14f09a..0be52b6ed686 100644 --- a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java @@ -9891,11 +9891,6 @@ public UserVm allocateVMFromBackup(CreateVMFromBackupCmd cmd) throws Insufficien throw new CloudRuntimeException("Create instance from backup is not supported for this provider."); } - BackupProvider backupProvider = backupManager.getBackupProviderForOffering(backup.getBackupOfferingId()); - if (backupProvider != null && "bx".equalsIgnoreCase(backupProvider.getName())) { - throw new CloudRuntimeException("Create instance from backup is not supported for this provider."); - } - DataCenter targetZone = _dcDao.findById(cmd.getZoneId()); if (targetZone == null) { throw new InvalidParameterValueException("Unable to find zone by id=" + cmd.getZoneId()); @@ -10046,13 +10041,6 @@ public UserVm restoreVMFromBackup(CreateVMFromBackupCmd cmd) throws ResourceUnav additonalParams.put(VirtualMachineProfile.Param.ReturnAfterVolumePrepare, true); try { - BackupVO backup = backupDao.findById(cmd.getBackupId()); - BackupProvider backupProvider = backupManager.getBackupProviderForOffering(backup.getBackupOfferingId()); - if (backupProvider != null && "bx".equalsIgnoreCase(backupProvider.getName())) { - vm = _vmDao.findById(vmId); - return vm; - } - Pair> vmParamPair = null; vmParamPair = startVirtualMachine(vmId, null, null, null, additonalParams, null); vm = vmParamPair.first(); @@ -11032,27 +11020,14 @@ public Pair restoreVMFromBxBackup(CreateVMFromBxBackupCmd cmd) } BackupProvider backupProvider = backupManager.getBackupProviderForOffering(backup.getBackupOfferingId()); - if (backupProvider != null && "bx".equalsIgnoreCase(backupProvider.getName())) { - Pair result = backupProvider.restoreBackupToVM(cmd.getBackupId(), cmd.getName()); - logger.debug(">>>restoreVMFromBxBackup result: {}", result); - if (result == null || !Boolean.TRUE.equals(result.first())) { - if (result != null && StringUtils.isNotEmpty(result.second())) { - throw new CloudRuntimeException(String.format("Failed to create Instance from backup %s using bx provider. Error: %s", backup.getUuid(), result.second())); - } - throw new CloudRuntimeException(String.format("Failed to create Instance from backup %s using bx provider.", backup.getUuid())); - } - - // logger.debug(">>>allocateVMFromBackup cmd.getName: {}", cmd.getName()); - // VMInstanceVO vmInstance = _vmInstanceDao.findVMByInstanceName(cmd.getName()); - // logger.debug(">>>allocateVMFromBackup vmInstance: {}", vmInstance); - // UserVm vm = (UserVm) vmInstance; - // logger.debug(">>>allocateVMFromBackup vm: {}", vm); - // if (vm == null) { - // throw new CloudRuntimeException(String.format("Unable to find restored Instance created from backup %s using bx provider.", backup.getUuid())); - // } - return result; - } else { - throw new CloudRuntimeException("Create instance from backup is not supported for this provider."); + Pair result = backupProvider.restoreBackupToVM(cmd.getBackupId(), cmd.getName()); + if (result == null || !Boolean.TRUE.equals(result.first())) { + if (result != null && StringUtils.isNotEmpty(result.second())) { + throw new CloudRuntimeException(String.format("Failed to create Instance from backup %s using bx provider. Error: %s", backup.getUuid(), result.second())); + } + throw new CloudRuntimeException(String.format("Failed to create Instance from backup %s using bx provider.", backup.getUuid())); } + + return result; } }