]> xenbits.xensource.com Git - libvirt.git/commitdiff
vz: set boot from disk for CT only when there is no root filesystem
authorMaxim Nestratov <mnestratov@virtuozzo.com>
Mon, 5 Dec 2016 13:11:15 +0000 (16:11 +0300)
committerMaxim Nestratov <mnestratov@virtuozzo.com>
Thu, 22 Dec 2016 19:06:39 +0000 (22:06 +0300)
Before, boot devices information for CTs was always empty and we
didn't indicate that containers can boot from disk.

Signed-off-by: Maxim Nestratov <mnestratov@virtuozzo.com>
src/vz/vz_sdk.c

index 620eded0b988b915986264bf5623ffca51deeac7..089a4299e06c6c6750c22c01be59e7c9e7265ae3 100644 (file)
@@ -1695,8 +1695,23 @@ prlsdkBootOrderCheck(PRL_HANDLE sdkdom, PRL_DEVICE_TYPE sdkType, int sdkIndex,
     return ret;
 }
 
+static void
+prlsdkConvertBootOrderCt(virDomainDefPtr def)
+{
+    size_t i;
+    for (i = 0; i < def->nfss; i++) {
+
+        if (STREQ(def->fss[i]->dst, "/")) {
+            def->os.nBootDevs = 0;
+            return;
+        }
+    }
+    def->os.nBootDevs = 1;
+    def->os.bootDevs[0] = VIR_DOMAIN_BOOT_DISK;
+}
+
 static int
-prlsdkConvertBootOrder(PRL_HANDLE sdkdom, virDomainDefPtr def)
+prlsdkConvertBootOrderVm(PRL_HANDLE sdkdom, virDomainDefPtr def)
 {
     int ret = -1;
     PRL_RESULT pret;
@@ -1855,8 +1870,12 @@ prlsdkLoadDomain(vzDriverPtr driver,
         goto error;
 
     /* depends on prlsdkAddDomainHardware */
-    if (prlsdkConvertBootOrder(sdkdom, def) < 0)
-        goto error;
+    if (IS_CT(def)) {
+        prlsdkConvertBootOrderCt(def);
+    } else {
+        if (prlsdkConvertBootOrderVm(sdkdom, def) < 0)
+            goto error;
+    }
 
     pret = PrlVmCfg_GetEnvId(sdkdom, &envId);
     prlsdkCheckRetGoto(pret, error);