From: Maxim Nestratov Date: Mon, 5 Dec 2016 13:11:15 +0000 (+0300) Subject: vz: set boot from disk for CT only when there is no root filesystem X-Git-Tag: v3.0.0-rc1~148 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7eda8369fc375e89830373d0a28b409aa70a2070;p=thirdparty%2Flibvirt.git vz: set boot from disk for CT only when there is no root filesystem 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 --- diff --git a/src/vz/vz_sdk.c b/src/vz/vz_sdk.c index 620eded0b9..089a4299e0 100644 --- a/src/vz/vz_sdk.c +++ b/src/vz/vz_sdk.c @@ -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);