[PATCH 2/3 v2] vz: allow to boot VM from cdrom

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



If user creates virtual machine via virt-manager and select "boot from ISO"
then in libvirt we can see the following devices section

   <disk type="file" device="disk">
     <source file="/var/lib/libvirt/images/generic.img"/>
     <target dev="hda" bus="ide"/>
   </disk>
   <disk type="file" device="cdrom">
     <source file="/var/lib/libvirt/images/Fedora-Live-Xfce-x86_64-23-10.iso"/>
     <target dev="hdb" bus="ide"/>
     <readonly/>
   </disk>

These devices don't have disk->format parameter, so we should
allow to add disks with format = VIR_STORAGE_FILE_NONE.

If user select boot from HDD and add new Cdrom device then we see

 <disk type="file" device="cdrom">
   <target dev="hdb" bus="ide"/>
   <readonly/>
 </disk>

Cdrom device  doesn't have disk->source parameter,
it means that user did select "attach to real device" or "use ISO".
So we should not return error if we get device with empty source path.
---
 diff from v1:
 Add commit description
 Move this commit to patch series

 src/vz/vz_sdk.c | 22 +++++++++++++---------
 1 file changed, 13 insertions(+), 9 deletions(-)

diff --git a/src/vz/vz_sdk.c b/src/vz/vz_sdk.c
index c5f8edd..1fcfb2e 100644
--- a/src/vz/vz_sdk.c
+++ b/src/vz/vz_sdk.c
@@ -2026,8 +2026,9 @@ prlsdkCheckUnsupportedParams(PRL_HANDLE sdkdom, virDomainDefPtr def)
     }
 
     if (!IS_CT(def)) {
-        if (def->os.nBootDevs != 1 ||
-            def->os.bootDevs[0] != VIR_DOMAIN_BOOT_DISK ||
+        if (def->os.nBootDevs == 0 ||
+            (def->os.bootDevs[0] != VIR_DOMAIN_BOOT_DISK &&
+            def->os.bootDevs[0] != VIR_DOMAIN_BOOT_CDROM) ||
             def->os.init != NULL || def->os.initargv != NULL) {
 
             virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
@@ -3192,11 +3193,12 @@ static int prlsdkAddDisk(PRL_HANDLE sdkdom,
 
     if (disk->src->type == VIR_STORAGE_TYPE_FILE) {
         if (disk->device == VIR_DOMAIN_DISK_DEVICE_DISK &&
-            virDomainDiskGetFormat(disk) != VIR_STORAGE_FILE_PLOOP) {
+            (virDomainDiskGetFormat(disk) != VIR_STORAGE_FILE_PLOOP &&
+             virDomainDiskGetFormat(disk) != VIR_STORAGE_FILE_NONE)) {
 
             virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Invalid format of "
-                                                         "disk %s, vz driver supports only "
-                                                         "images in ploop format."), disk->src->path);
+                                                         "disk %s, it should be either not set or "
+                                                         "ploop format."), disk->src->path);
             goto cleanup;
         }
 
@@ -3218,11 +3220,13 @@ static int prlsdkAddDisk(PRL_HANDLE sdkdom,
     pret = PrlVmDev_SetEmulatedType(sdkdisk, emutype);
     prlsdkCheckRetGoto(pret, cleanup);
 
-    pret = PrlVmDev_SetSysName(sdkdisk, disk->src->path);
-    prlsdkCheckRetGoto(pret, cleanup);
+    if (disk->src->path != NULL) {
+        pret = PrlVmDev_SetSysName(sdkdisk, disk->src->path);
+        prlsdkCheckRetGoto(pret, cleanup);
 
-    pret = PrlVmDev_SetFriendlyName(sdkdisk, disk->src->path);
-    prlsdkCheckRetGoto(pret, cleanup);
+        pret = PrlVmDev_SetFriendlyName(sdkdisk, disk->src->path);
+        prlsdkCheckRetGoto(pret, cleanup);
+    }
 
     drive = &disk->info.addr.drive;
     if (drive->controller > 0) {
-- 
1.8.3.1

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]