[libvirt] [PATCH 0/6] Almost finish extermination of virDomainLiveConfigHelperMethod

Few patches are not ideal, so ideas are welcome. Peter Krempa (6): qemu: driver: Make name of QEMU_SET_MEM_PARAMETER more universal lxc: Synchronize implementation of qemuDomainSetMemoryParameters openvz: Remove use of virDomainLiveConfigHelperMethod conf: Don't use virDomainLiveConfigHelperMethod in virDomainObjSetMetadata conf: Don't use virDomainLiveConfigHelperMethod in virDomainObjGetMetadata conf: Isolate virDomainLiveConfigHelperMethod to libxl only src/bhyve/bhyve_driver.c | 9 +------ src/conf/domain_conf.c | 49 ++++++------------------------------- src/conf/domain_conf.h | 9 ------- src/libvirt_private.syms | 1 - src/libxl/libxl_driver.c | 30 +++++++++++++++++++++++ src/lxc/lxc_driver.c | 60 ++++++++++++++++++++-------------------------- src/openvz/openvz_driver.c | 15 ++++-------- src/qemu/qemu_driver.c | 22 +++++++---------- src/test/test_driver.c | 4 +--- 9 files changed, 79 insertions(+), 120 deletions(-) -- 2.9.0

Use a VIR_ prefix even when it's a local helper macro. It will be later synced with the LXC implementation. --- src/qemu/qemu_driver.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 0507be8..e26f584 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -9176,7 +9176,7 @@ qemuDomainSetMemoryParameters(virDomainPtr dom, } } -#define QEMU_SET_MEM_PARAMETER(FUNC, VALUE) \ +#define VIR_SET_MEM_PARAMETER(FUNC, VALUE) \ if (set_ ## VALUE) { \ if (def) { \ if ((rc = FUNC(priv->cgroup, VALUE)) < 0) \ @@ -9189,21 +9189,21 @@ qemuDomainSetMemoryParameters(virDomainPtr dom, } /* Soft limit doesn't clash with the others */ - QEMU_SET_MEM_PARAMETER(virCgroupSetMemorySoftLimit, soft_limit); + VIR_SET_MEM_PARAMETER(virCgroupSetMemorySoftLimit, soft_limit); /* set hard limit before swap hard limit if decreasing it */ if (def && def->mem.hard_limit > hard_limit) { - QEMU_SET_MEM_PARAMETER(virCgroupSetMemoryHardLimit, hard_limit); + VIR_SET_MEM_PARAMETER(virCgroupSetMemoryHardLimit, hard_limit); /* inhibit changing the limit a second time */ set_hard_limit = false; } - QEMU_SET_MEM_PARAMETER(virCgroupSetMemSwapHardLimit, swap_hard_limit); + VIR_SET_MEM_PARAMETER(virCgroupSetMemSwapHardLimit, swap_hard_limit); /* otherwise increase it after swap hard limit */ - QEMU_SET_MEM_PARAMETER(virCgroupSetMemoryHardLimit, hard_limit); + VIR_SET_MEM_PARAMETER(virCgroupSetMemoryHardLimit, hard_limit); -#undef QEMU_SET_MEM_PARAMETER +#undef VIR_SET_MEM_PARAMETER if (def && virDomainSaveStatus(driver->xmlopt, cfg->stateDir, vm, driver->caps) < 0) -- 2.9.0

The impls are identical and I don't have a reasonable idea where to extract it. This also kills yet another use of virDomainLiveConfigHelperMethod. --- src/lxc/lxc_driver.c | 52 ++++++++++++++++++++++++-------------------------- src/qemu/qemu_driver.c | 2 ++ 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c index a3fa770..9c3d9f2 100644 --- a/src/lxc/lxc_driver.c +++ b/src/lxc/lxc_driver.c @@ -803,7 +803,7 @@ lxcDomainSetMemoryParameters(virDomainPtr dom, int nparams, unsigned int flags) { - virCapsPtr caps = NULL; + virDomainDefPtr def = NULL; virDomainDefPtr persistentDef = NULL; virDomainObjPtr vm = NULL; virLXCDomainObjPrivatePtr priv = NULL; @@ -837,21 +837,20 @@ lxcDomainSetMemoryParameters(virDomainPtr dom, priv = vm->privateData; cfg = virLXCDriverGetConfig(driver); - if (virDomainSetMemoryParametersEnsureACL(dom->conn, vm->def, flags) < 0 || - !(caps = virLXCDriverGetCapabilities(driver, false))) + if (virDomainSetMemoryParametersEnsureACL(dom->conn, vm->def, flags) < 0) goto cleanup; if (virLXCDomainObjBeginJob(driver, vm, LXC_JOB_MODIFY) < 0) goto cleanup; - if (virDomainLiveConfigHelperMethod(caps, driver->xmlopt, - vm, &flags, &persistentDef) < 0) + /* QEMU and LXC implementation are identical */ + if (virDomainObjGetDefs(vm, flags, &def, &persistentDef) < 0) goto endjob; - if (flags & VIR_DOMAIN_AFFECT_LIVE && + if (def && !virCgroupHasController(priv->cgroup, VIR_CGROUP_CONTROLLER_MEMORY)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("cgroup memory controller is not mounted")); + virReportError(VIR_ERR_OPERATION_INVALID, "%s", + _("cgroup memory controller is not mounted")); goto endjob; } @@ -868,8 +867,7 @@ lxcDomainSetMemoryParameters(virDomainPtr dom, #undef VIR_GET_LIMIT_PARAMETER - /* Swap hard limit must be greater than hard limit. - * Note that limit of 0 denotes unlimited */ + /* Swap hard limit must be greater than hard limit. */ if (set_swap_hard_limit || set_hard_limit) { unsigned long long mem_limit = vm->def->mem.hard_limit; unsigned long long swap_limit = vm->def->mem.swap_hard_limit; @@ -888,42 +886,43 @@ lxcDomainSetMemoryParameters(virDomainPtr dom, } } -#define LXC_SET_MEM_PARAMETER(FUNC, VALUE) \ +#define VIR_SET_MEM_PARAMETER(FUNC, VALUE) \ if (set_ ## VALUE) { \ - if (flags & VIR_DOMAIN_AFFECT_LIVE) { \ - if ((rc = FUNC(priv->cgroup, VALUE)) < 0) { \ - virReportSystemError(-rc, _("unable to set memory %s tunable"), \ - #VALUE); \ - \ + if (def) { \ + if ((rc = FUNC(priv->cgroup, VALUE)) < 0) \ goto endjob; \ - } \ - vm->def->mem.VALUE = VALUE; \ + def->mem.VALUE = VALUE; \ } \ \ - if (flags & VIR_DOMAIN_AFFECT_CONFIG) \ + if (persistentDef) \ persistentDef->mem.VALUE = VALUE; \ } /* Soft limit doesn't clash with the others */ - LXC_SET_MEM_PARAMETER(virCgroupSetMemorySoftLimit, soft_limit); + VIR_SET_MEM_PARAMETER(virCgroupSetMemorySoftLimit, soft_limit); /* set hard limit before swap hard limit if decreasing it */ - if (vm->def->mem.hard_limit > hard_limit) { - LXC_SET_MEM_PARAMETER(virCgroupSetMemoryHardLimit, hard_limit); + if (def && def->mem.hard_limit > hard_limit) { + VIR_SET_MEM_PARAMETER(virCgroupSetMemoryHardLimit, hard_limit); /* inhibit changing the limit a second time */ set_hard_limit = false; } - LXC_SET_MEM_PARAMETER(virCgroupSetMemSwapHardLimit, swap_hard_limit); + VIR_SET_MEM_PARAMETER(virCgroupSetMemSwapHardLimit, swap_hard_limit); /* otherwise increase it after swap hard limit */ - LXC_SET_MEM_PARAMETER(virCgroupSetMemoryHardLimit, hard_limit); + VIR_SET_MEM_PARAMETER(virCgroupSetMemoryHardLimit, hard_limit); -#undef LXC_SET_MEM_PARAMETER +#undef VIR_SET_MEM_PARAMETER - if (flags & VIR_DOMAIN_AFFECT_CONFIG && + if (def && + virDomainSaveStatus(driver->xmlopt, cfg->stateDir, vm, driver->caps) < 0) + goto endjob; + + if (persistentDef && virDomainSaveConfig(cfg->configDir, driver->caps, persistentDef) < 0) goto endjob; + /* QEMU and LXC implementations are identical */ ret = 0; @@ -932,7 +931,6 @@ lxcDomainSetMemoryParameters(virDomainPtr dom, cleanup: virDomainObjEndAPI(&vm); - virObjectUnref(caps); virObjectUnref(cfg); return ret; } diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index e26f584..3274f7f 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -9134,6 +9134,7 @@ qemuDomainSetMemoryParameters(virDomainPtr dom, if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) goto cleanup; + /* QEMU and LXC implementation are identical */ if (virDomainObjGetDefs(vm, flags, &def, &persistentDef) < 0) goto endjob; @@ -9212,6 +9213,7 @@ qemuDomainSetMemoryParameters(virDomainPtr dom, if (persistentDef && virDomainSaveConfig(cfg->configDir, driver->caps, persistentDef) < 0) goto endjob; + /* QEMU and LXC implementations are identical */ ret = 0; -- 2.9.0

--- src/openvz/openvz_driver.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/openvz/openvz_driver.c b/src/openvz/openvz_driver.c index 48c264b..844193a 100644 --- a/src/openvz/openvz_driver.c +++ b/src/openvz/openvz_driver.c @@ -2084,7 +2084,7 @@ openvzDomainUpdateDeviceFlags(virDomainPtr dom, const char *xml, struct openvz_driver *driver = dom->conn->privateData; virDomainDeviceDefPtr dev = NULL; virDomainObjPtr vm = NULL; - virDomainDefPtr vmdef = NULL; + virDomainDefPtr def = NULL; bool persist = false; virCheckFlags(VIR_DOMAIN_DEVICE_MODIFY_LIVE | @@ -2098,22 +2098,17 @@ openvzDomainUpdateDeviceFlags(virDomainPtr dom, const char *xml, _("no domain with matching uuid")); goto cleanup; } - vmdef = vm->def; - if (virStrToLong_i(vmdef->name, NULL, 10, &veid) < 0) { + if (virStrToLong_i(vm->def->name, NULL, 10, &veid) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Could not convert domain name to VEID")); goto cleanup; } - if (virDomainLiveConfigHelperMethod(driver->caps, - driver->xmlopt, - vm, - &flags, - &vmdef) < 0) + if (!(def = virDomainObjGetOneDef(vm, flags))) goto cleanup; - dev = virDomainDeviceDefParse(xml, vmdef, driver->caps, driver->xmlopt, + dev = virDomainDeviceDefParse(xml, def, driver->caps, driver->xmlopt, VIR_DOMAIN_DEF_PARSE_INACTIVE); if (!dev) goto cleanup; @@ -2121,7 +2116,7 @@ openvzDomainUpdateDeviceFlags(virDomainPtr dom, const char *xml, if (flags & VIR_DOMAIN_AFFECT_CONFIG) persist = true; - if (openvzUpdateDevice(vmdef, dev, persist) < 0) + if (openvzUpdateDevice(def, dev, persist) < 0) goto cleanup; ret = 0; -- 2.9.0

--- src/conf/domain_conf.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 78e394d..1ae10ca 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -24813,24 +24813,24 @@ virDomainObjSetMetadata(virDomainObjPtr vm, const char *configDir, unsigned int flags) { + virDomainDefPtr def; virDomainDefPtr persistentDef; virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG, -1); - if (virDomainLiveConfigHelperMethod(caps, xmlopt, vm, &flags, - &persistentDef) < 0) + if (virDomainObjGetDefs(vm, flags, &def, &persistentDef) < 0) return -1; - if (flags & VIR_DOMAIN_AFFECT_LIVE) { - if (virDomainDefSetMetadata(vm->def, type, metadata, key, uri) < 0) + if (def) { + if (virDomainDefSetMetadata(def, type, metadata, key, uri) < 0) return -1; if (virDomainSaveStatus(xmlopt, stateDir, vm, caps) < 0) return -1; } - if (flags & VIR_DOMAIN_AFFECT_CONFIG) { + if (persistentDef) { if (virDomainDefSetMetadata(persistentDef, type, metadata, key, uri) < 0) return -1; -- 2.9.0

Few arguments of the function are not necessary any more which leads to some cleanups. The 'uri' argument had a stray ATTRIBUTE_UNUSED. --- src/bhyve/bhyve_driver.c | 9 +-------- src/conf/domain_conf.c | 10 ++-------- src/conf/domain_conf.h | 2 -- src/lxc/lxc_driver.c | 8 +------- src/qemu/qemu_driver.c | 8 +------- src/test/test_driver.c | 4 +--- 6 files changed, 6 insertions(+), 35 deletions(-) diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c index 8036661..e9fd64f 100644 --- a/src/bhyve/bhyve_driver.c +++ b/src/bhyve/bhyve_driver.c @@ -1131,9 +1131,7 @@ bhyveDomainGetMetadata(virDomainPtr dom, const char *uri, unsigned int flags) { - bhyveConnPtr privconn = dom->conn->privateData; virDomainObjPtr vm; - virCapsPtr caps = NULL; char *ret = NULL; if (!(vm = bhyveDomObjFromDomain(dom))) @@ -1142,14 +1140,9 @@ bhyveDomainGetMetadata(virDomainPtr dom, if (virDomainGetMetadataEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - if (!(caps = bhyveDriverGetCapabilities(privconn))) - goto cleanup; - - ret = virDomainObjGetMetadata(vm, type, uri, caps, - privconn->xmlopt, flags); + ret = virDomainObjGetMetadata(vm, type, uri, flags); cleanup: - virObjectUnref(caps); virObjectUnlock(vm); return ret; } diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 1ae10ca..bbc9903 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -24659,9 +24659,7 @@ virDomainDefFindDevice(virDomainDefPtr def, char * virDomainObjGetMetadata(virDomainObjPtr vm, int type, - const char *uri ATTRIBUTE_UNUSED, - virCapsPtr caps, - virDomainXMLOptionPtr xmlopt, + const char *uri, unsigned int flags) { virDomainDefPtr def; @@ -24676,13 +24674,9 @@ virDomainObjGetMetadata(virDomainObjPtr vm, goto cleanup; } - if (virDomainLiveConfigHelperMethod(caps, xmlopt, vm, &flags, &def) < 0) + if (!(def = virDomainObjGetOneDef(vm, flags))) goto cleanup; - /* use correct domain definition according to flags */ - if (flags & VIR_DOMAIN_AFFECT_LIVE) - def = vm->def; - switch ((virDomainMetadataType) type) { case VIR_DOMAIN_METADATA_DESCRIPTION: if (VIR_STRDUP(ret, def->description) < 0) diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index e1990dc..91ebf83 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -3044,8 +3044,6 @@ void virDomainChrSourceDefClear(virDomainChrSourceDefPtr def); char *virDomainObjGetMetadata(virDomainObjPtr vm, int type, const char *uri, - virCapsPtr caps, - virDomainXMLOptionPtr xmlopt, unsigned int flags); int virDomainObjSetMetadata(virDomainObjPtr vm, diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c index 9c3d9f2..46af05d 100644 --- a/src/lxc/lxc_driver.c +++ b/src/lxc/lxc_driver.c @@ -5381,8 +5381,6 @@ lxcDomainGetMetadata(virDomainPtr dom, const char *uri, unsigned int flags) { - virLXCDriverPtr driver = dom->conn->privateData; - virCapsPtr caps = NULL; virDomainObjPtr vm; char *ret = NULL; @@ -5392,14 +5390,10 @@ lxcDomainGetMetadata(virDomainPtr dom, if (virDomainGetMetadataEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - if (!(caps = virLXCDriverGetCapabilities(driver, false))) - goto cleanup; - - ret = virDomainObjGetMetadata(vm, type, uri, caps, driver->xmlopt, flags); + ret = virDomainObjGetMetadata(vm, type, uri, flags); cleanup: virDomainObjEndAPI(&vm); - virObjectUnref(caps); return ret; } diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 3274f7f..a550e08 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -17576,8 +17576,6 @@ qemuDomainGetMetadata(virDomainPtr dom, const char *uri, unsigned int flags) { - virQEMUDriverPtr driver = dom->conn->privateData; - virCapsPtr caps = NULL; virDomainObjPtr vm; char *ret = NULL; @@ -17587,14 +17585,10 @@ qemuDomainGetMetadata(virDomainPtr dom, if (virDomainGetMetadataEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - if (!(caps = virQEMUDriverGetCapabilities(driver, false))) - goto cleanup; - - ret = virDomainObjGetMetadata(vm, type, uri, caps, driver->xmlopt, flags); + ret = virDomainObjGetMetadata(vm, type, uri, flags); cleanup: virDomainObjEndAPI(&vm); - virObjectUnref(caps); return ret; } diff --git a/src/test/test_driver.c b/src/test/test_driver.c index baff085..4ed631b 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -2659,7 +2659,6 @@ static char *testDomainGetMetadata(virDomainPtr dom, const char *uri, unsigned int flags) { - testDriverPtr privconn = dom->conn->privateData; virDomainObjPtr privdom; char *ret; @@ -2669,8 +2668,7 @@ static char *testDomainGetMetadata(virDomainPtr dom, if (!(privdom = testDomObjFromDomain(dom))) return NULL; - ret = virDomainObjGetMetadata(privdom, type, uri, privconn->caps, - privconn->xmlopt, flags); + ret = virDomainObjGetMetadata(privdom, type, uri, flags); virDomainObjEndAPI(&privdom); return ret; -- 2.9.0

Libxl is the last user and I don't have the toolchain prepared to compile the libxl driver. Move it to the libxl driver to avoid having to refactor the code. --- src/conf/domain_conf.c | 29 ----------------------------- src/conf/domain_conf.h | 7 ------- src/libvirt_private.syms | 1 - src/libxl/libxl_driver.c | 30 ++++++++++++++++++++++++++++++ 4 files changed, 30 insertions(+), 37 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index bbc9903..d6ab93a 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -2982,35 +2982,6 @@ virDomainObjUpdateModificationImpact(virDomainObjPtr vm, } -/* - * Helper method for --current, --live, and --config options, and check - * whether domain is active or can get persistent domain configuration. - * - * Return 0 if success, also change the flags and get the persistent - * domain configuration if needed. Return -1 on error. - */ -int -virDomainLiveConfigHelperMethod(virCapsPtr caps, - virDomainXMLOptionPtr xmlopt, - virDomainObjPtr dom, - unsigned int *flags, - virDomainDefPtr *persistentDef) -{ - if (virDomainObjUpdateModificationImpact(dom, flags) < 0) - return -1; - - if (*flags & VIR_DOMAIN_AFFECT_CONFIG) { - if (!(*persistentDef = virDomainObjGetPersistentDef(caps, xmlopt, dom))) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("Get persistent config failed")); - return -1; - } - } - - return 0; -} - - /** * virDomainObjGetDefs: * diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 91ebf83..de3ce5d 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2556,13 +2556,6 @@ int virDomainObjGetDefs(virDomainObjPtr vm, virDomainDefPtr *persDef); virDomainDefPtr virDomainObjGetOneDef(virDomainObjPtr vm, unsigned int flags); -int -virDomainLiveConfigHelperMethod(virCapsPtr caps, - virDomainXMLOptionPtr xmlopt, - virDomainObjPtr dom, - unsigned int *flags, - virDomainDefPtr *persistentDef); - virDomainDefPtr virDomainDefCopy(virDomainDefPtr src, virCapsPtr caps, virDomainXMLOptionPtr xmlopt, diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 4617f5d..df2b2e8 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -358,7 +358,6 @@ virDomainLifecycleCrashTypeFromString; virDomainLifecycleCrashTypeToString; virDomainLifecycleTypeFromString; virDomainLifecycleTypeToString; -virDomainLiveConfigHelperMethod; virDomainLoaderDefFree; virDomainLoaderTypeFromString; virDomainLoaderTypeToString; diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c index 3189f1c..2661168 100644 --- a/src/libxl/libxl_driver.c +++ b/src/libxl/libxl_driver.c @@ -1431,6 +1431,36 @@ libxlDomainGetMaxMemory(virDomainPtr dom) return ret; } + +/* + * Helper method for --current, --live, and --config options, and check + * whether domain is active or can get persistent domain configuration. + * + * Return 0 if success, also change the flags and get the persistent + * domain configuration if needed. Return -1 on error. + */ +static int +virDomainLiveConfigHelperMethod(virCapsPtr caps, + virDomainXMLOptionPtr xmlopt, + virDomainObjPtr dom, + unsigned int *flags, + virDomainDefPtr *persistentDef) +{ + if (virDomainObjUpdateModificationImpact(dom, flags) < 0) + return -1; + + if (*flags & VIR_DOMAIN_AFFECT_CONFIG) { + if (!(*persistentDef = virDomainObjGetPersistentDef(caps, xmlopt, dom))) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("Get persistent config failed")); + return -1; + } + } + + return 0; +} + + static int libxlDomainSetMemoryFlags(virDomainPtr dom, unsigned long newmem, unsigned int flags) -- 2.9.0

On 01.07.2016 16:34, Peter Krempa wrote:
Few patches are not ideal, so ideas are welcome.
Peter Krempa (6): qemu: driver: Make name of QEMU_SET_MEM_PARAMETER more universal lxc: Synchronize implementation of qemuDomainSetMemoryParameters openvz: Remove use of virDomainLiveConfigHelperMethod conf: Don't use virDomainLiveConfigHelperMethod in virDomainObjSetMetadata conf: Don't use virDomainLiveConfigHelperMethod in virDomainObjGetMetadata conf: Isolate virDomainLiveConfigHelperMethod to libxl only
src/bhyve/bhyve_driver.c | 9 +------ src/conf/domain_conf.c | 49 ++++++------------------------------- src/conf/domain_conf.h | 9 ------- src/libvirt_private.syms | 1 - src/libxl/libxl_driver.c | 30 +++++++++++++++++++++++ src/lxc/lxc_driver.c | 60 ++++++++++++++++++++-------------------------- src/openvz/openvz_driver.c | 15 ++++-------- src/qemu/qemu_driver.c | 22 +++++++---------- src/test/test_driver.c | 4 +--- 9 files changed, 79 insertions(+), 120 deletions(-)
ACK series. Michal
participants (2)
-
Michal Privoznik
-
Peter Krempa