diff options
author | Guido Günther <agx@sigxcpu.org> | 2010-11-28 22:52:44 +0100 |
---|---|---|
committer | Guido Günther <agx@sigxcpu.org> | 2010-11-30 17:20:02 +0100 |
commit | 50a7c59bb30b95fd56cda34510f319f48f97f90e (patch) | |
tree | 879a5490586fd7e469952a7491a1be893c150127 | |
parent | Log client errors in libvirtd at debug priority (diff) | |
download | libvirt-50a7c59bb30b95fd56cda34510f319f48f97f90e.tar.gz libvirt-50a7c59bb30b95fd56cda34510f319f48f97f90e.tar.bz2 libvirt-50a7c59bb30b95fd56cda34510f319f48f97f90e.zip |
OpenVZ: take veid from vmdef->name when defining new domains
We currently use the next free veid although there's one given in the
domain xml. This currently breaks defining new domains since vmdef->name
and veid don't match leading to the following error later on:
error: Failed to define domain from 110.xml
error: internal error Could not set UUID
Since silently ignoring vmdef->name is not nice respect it instead. We
avoid veid collisions in the upper levels already.
-rw-r--r-- | src/openvz/openvz_driver.c | 41 |
1 files changed, 2 insertions, 39 deletions
diff --git a/src/openvz/openvz_driver.c b/src/openvz/openvz_driver.c index 807bb7c09..8dc95e2eb 100644 --- a/src/openvz/openvz_driver.c +++ b/src/openvz/openvz_driver.c @@ -58,7 +58,6 @@ #include "memory.h" #include "bridge.h" #include "files.h" -#include "intprops.h" #define VIR_FROM_THIS VIR_FROM_OPENVZ @@ -103,10 +102,6 @@ openvzDomainDefineCmd(const char *args[], int maxarg, virDomainDefPtr vmdef) { int narg; - int veid; - int max_veid; - char str_id[INT_BUFSIZE_BOUND(max_veid)]; - FILE *fp; for (narg = 0; narg < maxarg; narg++) args[narg] = NULL; @@ -116,6 +111,7 @@ openvzDomainDefineCmd(const char *args[], _("Container is not defined")); return -1; } + #define ADD_ARG(thisarg) \ do { \ if (narg >= maxarg) \ @@ -136,36 +132,7 @@ openvzDomainDefineCmd(const char *args[], ADD_ARG_LIT("--quiet"); ADD_ARG_LIT("create"); - if ((fp = popen(VZLIST " -a -ovpsid -H 2>/dev/null", "r")) == NULL) { - openvzError(VIR_ERR_INTERNAL_ERROR, "%s", - _("popen failed")); - return -1; - } - max_veid = 0; - while (!feof(fp)) { - if (fscanf(fp, "%d\n", &veid) != 1) { - if (feof(fp)) - break; - - openvzError(VIR_ERR_INTERNAL_ERROR, "%s", - _("Failed to parse vzlist output")); - goto cleanup; - } - if (veid > max_veid) { - max_veid = veid; - } - } - VIR_FORCE_FCLOSE(fp); - - if (max_veid == 0) { - max_veid = 100; - } else { - max_veid++; - } - - snprintf(str_id, sizeof(str_id), "%d", max_veid); - ADD_ARG_LIT(str_id); - + ADD_ARG_LIT(vmdef->name); ADD_ARG_LIT("--name"); ADD_ARG_LIT(vmdef->name); @@ -189,10 +156,6 @@ no_memory: _("Could not put argument to %s"), VZCTL); return -1; -cleanup: - VIR_FORCE_FCLOSE(fp); - return -1; - #undef ADD_ARG #undef ADD_ARG_LIT } |