Skip to content

Commit efe9d8c

Browse files
committed
Support virtio-blk root disk controller
1 parent 91f1ada commit efe9d8c

File tree

4 files changed

+15
-3
lines changed

4 files changed

+15
-3
lines changed

plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3098,7 +3098,7 @@ public int compare(final DiskTO arg0, final DiskTO arg1) {
30983098
disk.setBusType(DiskDef.DiskBus.SCSI);
30993099
}
31003100
} else {
3101-
if (diskBusType == DiskDef.DiskBus.SCSI ) {
3101+
if (diskBusType == DiskDef.DiskBus.SCSI || diskBusType == DiskDef.DiskBus.VIRTIO_BLK) {
31023102
disk.setQemuDriver(true);
31033103
disk.setDiscard(DiscardType.UNMAP);
31043104
}

plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -636,7 +636,7 @@ public String toString() {
636636
}
637637

638638
public enum DiskBus {
639-
IDE("ide"), SCSI("scsi"), VIRTIO("virtio"), XEN("xen"), USB("usb"), UML("uml"), FDC("fdc"), SATA("sata");
639+
IDE("ide"), SCSI("scsi"), VIRTIO("virtio"), XEN("xen"), USB("usb"), UML("uml"), FDC("fdc"), SATA("sata"), VIRTIO_BLK("virtio-blk");
640640
String _bus;
641641

642642
DiskBus(String bus) {

plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1408,12 +1408,14 @@ protected synchronized void attachOrDetachDisk(final Connect conn, final boolean
14081408
if (disk.getDeviceType() == DeviceType.DISK) {
14091409
if (disk.getBusType() == DiskDef.DiskBus.SCSI) {
14101410
busT = DiskDef.DiskBus.SCSI;
1411+
} else if (disk.getBusType() == DiskDef.DiskBus.VIRTIO_BLK) {
1412+
busT = DiskDef.DiskBus.VIRTIO_BLK;
14111413
}
14121414
break;
14131415
}
14141416
}
14151417
diskdef = new DiskDef();
1416-
if (busT == DiskDef.DiskBus.SCSI) {
1418+
if (busT == DiskDef.DiskBus.SCSI || busT == DiskDef.DiskBus.VIRTIO_BLK) {
14171419
diskdef.setQemuDriver(true);
14181420
diskdef.setDiscard(DiscardType.UNMAP);
14191421
}

plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6408,4 +6408,14 @@ public void createLinstorVdb() throws LibvirtException, InternalErrorException,
64086408
assertEquals(DiskDef.DiscardType.UNMAP, rootDisk.getDiscard());
64096409
}
64106410
}
6411+
6412+
@Test
6413+
public void testGetDiskModelFromVMDetailVirtioBlk() {
6414+
VirtualMachineTO virtualMachineTO = Mockito.mock(VirtualMachineTO.class);
6415+
Map<String, String> details = new HashMap<>();
6416+
details.put(VmDetailConstants.ROOT_DISK_CONTROLLER, "virtio_blk");
6417+
Mockito.when(virtualMachineTO.getDetails()).thenReturn(details);
6418+
DiskDef.DiskBus diskBus = libvirtComputingResourceSpy.getDiskModelFromVMDetail(virtualMachineTO);
6419+
assertEquals(DiskDef.DiskBus.VIRTIO_BLK, diskBus);
6420+
}
64116421
}

0 commit comments

Comments
 (0)