Skip to content

Commit 4f604c0

Browse files
authored
Support virtio-blk root disk controller (#10229)
1 parent d3170bf commit 4f604c0

File tree

5 files changed

+16
-4
lines changed

5 files changed

+16
-4
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
@@ -3109,7 +3109,7 @@ public int compare(final DiskTO arg0, final DiskTO arg1) {
31093109
disk.setBusType(DiskDef.DiskBus.SCSI);
31103110
}
31113111
} else {
3112-
if (diskBusType == DiskDef.DiskBus.SCSI ) {
3112+
if (diskBusType == DiskDef.DiskBus.SCSI || diskBusType == DiskDef.DiskBus.VIRTIOBLK) {
31133113
disk.setQemuDriver(true);
31143114
disk.setDiscard(DiscardType.UNMAP);
31153115
}

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
@@ -639,7 +639,7 @@ public String toString() {
639639
}
640640

641641
public enum DiskBus {
642-
IDE("ide"), SCSI("scsi"), VIRTIO("virtio"), XEN("xen"), USB("usb"), UML("uml"), FDC("fdc"), SATA("sata");
642+
IDE("ide"), SCSI("scsi"), VIRTIO("virtio"), XEN("xen"), USB("usb"), UML("uml"), FDC("fdc"), SATA("sata"), VIRTIOBLK("virtio-blk");
643643
String _bus;
644644

645645
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
@@ -1423,12 +1423,14 @@ protected synchronized void attachOrDetachDisk(final Connect conn, final boolean
14231423
if (disk.getDeviceType() == DeviceType.DISK) {
14241424
if (disk.getBusType() == DiskDef.DiskBus.SCSI) {
14251425
busT = DiskDef.DiskBus.SCSI;
1426+
} else if (disk.getBusType() == DiskDef.DiskBus.VIRTIOBLK) {
1427+
busT = DiskDef.DiskBus.VIRTIOBLK;
14261428
}
14271429
break;
14281430
}
14291431
}
14301432
diskdef = new DiskDef();
1431-
if (busT == DiskDef.DiskBus.SCSI) {
1433+
if (busT == DiskDef.DiskBus.SCSI || busT == DiskDef.DiskBus.VIRTIOBLK) {
14321434
diskdef.setQemuDriver(true);
14331435
diskdef.setDiscard(DiscardType.UNMAP);
14341436
}

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
@@ -6411,4 +6411,14 @@ public void createLinstorVdb() throws LibvirtException, InternalErrorException,
64116411
assertEquals(DiskDef.DiscardType.UNMAP, rootDisk.getDiscard());
64126412
}
64136413
}
6414+
6415+
@Test
6416+
public void testGetDiskModelFromVMDetailVirtioBlk() {
6417+
VirtualMachineTO virtualMachineTO = Mockito.mock(VirtualMachineTO.class);
6418+
Map<String, String> details = new HashMap<>();
6419+
details.put(VmDetailConstants.ROOT_DISK_CONTROLLER, "virtio-blk");
6420+
Mockito.when(virtualMachineTO.getDetails()).thenReturn(details);
6421+
DiskDef.DiskBus diskBus = libvirtComputingResourceSpy.getDiskModelFromVMDetail(virtualMachineTO);
6422+
assertEquals(DiskDef.DiskBus.VIRTIOBLK, diskBus);
6423+
}
64146424
}

server/src/main/java/com/cloud/api/query/QueryManagerImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4978,7 +4978,7 @@ private void fillVMOrTemplateDetailOptions(final Map<String, List<String>> optio
49784978

49794979
if (HypervisorType.KVM.equals(hypervisorType)) {
49804980
options.put(VmDetailConstants.NIC_ADAPTER, Arrays.asList("e1000", "virtio", "rtl8139", "vmxnet3", "ne2k_pci"));
4981-
options.put(VmDetailConstants.ROOT_DISK_CONTROLLER, Arrays.asList("osdefault", "ide", "scsi", "virtio"));
4981+
options.put(VmDetailConstants.ROOT_DISK_CONTROLLER, Arrays.asList("osdefault", "ide", "scsi", "virtio", "virtio-blk"));
49824982
options.put(VmDetailConstants.VIDEO_HARDWARE, Arrays.asList("cirrus", "vga", "qxl", "virtio"));
49834983
options.put(VmDetailConstants.VIDEO_RAM, Collections.emptyList());
49844984
options.put(VmDetailConstants.IO_POLICY, Arrays.asList("threads", "native", "io_uring", "storage_specific"));

0 commit comments

Comments
 (0)