[libvirt] [PATCH] vz: allow to boot VM from cdrom

Mikhail Feoktistov mfeoktistov at virtuozzo.com
Fri Nov 20 13:00:35 UTC 2015


---
 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 750133d..9bdf7aa9a 100644
--- a/src/vz/vz_sdk.c
+++ b/src/vz/vz_sdk.c
@@ -2023,8 +2023,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",
@@ -3179,11 +3180,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;
         }
 
@@ -3205,11 +3207,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




More information about the libvir-list mailing list