From 15b57e69749e1da728c68c5c24f153f4c39aaa8d Mon Sep 17 00:00:00 2001 From: Edison Su Date: Fri, 13 Jan 2012 18:36:53 -0800 Subject: [PATCH] fix multiple data disks booting issue on windows vm --- .../resource/computing/LibvirtComputingResource.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/agent/src/com/cloud/agent/resource/computing/LibvirtComputingResource.java b/agent/src/com/cloud/agent/resource/computing/LibvirtComputingResource.java index 26e477f801e..0eb779c62bb 100755 --- a/agent/src/com/cloud/agent/resource/computing/LibvirtComputingResource.java +++ b/agent/src/com/cloud/agent/resource/computing/LibvirtComputingResource.java @@ -2375,6 +2375,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv } protected void createVbd(Connect conn, VirtualMachineTO vmSpec, String vmName, LibvirtVMDef vm) throws InternalErrorException, LibvirtException, URISyntaxException{ + List disks = new ArrayList(); for (VolumeTO volume : vmSpec.getDisks()) { KVMPhysicalDisk physicalDisk = null; KVMStoragePool pool = null; @@ -2415,12 +2416,19 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv disk.defFileBasedDisk(physicalDisk.getPath(), devId, diskBusType, DiskDef.diskFmtType.QCOW2); } } + + disks.add(devId, disk); + continue; } vm.getDevices().addDevice(disk); } + for (DiskDef disk : disks) { + vm.getDevices().addDevice(disk); + } + if (vmSpec.getType() != VirtualMachine.Type.User) { if (_sysvmISOPath != null) { DiskDef iso = new DiskDef();