[libvirt] [PATCH] API: consolidate common unreleased enums

This commit is safe precisely because there has been no release for any of the enum values being deleted (they were added post-0.9.1). After the 0.9.2 release, we can then take advantage of virDomainModificationImpact in more places. * include/libvirt/libvirt.h.in (virDomainModificationImpact): New enum. (virDomainSchedParameterFlags, virMemoryParamFlags): Delete, since these were never released, and the new enum works fine here. * src/libvirt.c (virDomainGetMemoryParameters) (virDomainSetMemoryParameters) (virDomainGetSchedulerParametersFlags) (virDomainSetSchedulerParametersFlags): Update documentation. * src/qemu/qemu_driver.c (qemuDomainSetMemoryParameters) (qemuDomainGetMemoryParameters, qemuSetSchedulerParametersFlags) (qemuSetSchedulerParameters, qemuGetSchedulerParametersFlags) (qemuGetSchedulerParameters): Adjust clients. * tools/virsh.c (cmdSchedinfo, cmdMemtune): Likewise. Based on ideas by Daniel Veillard and Hu Tao. --- This has to be applied before 0.9.2 if we like the idea. See https://www.redhat.com/archives/libvir-list/2011-June/msg00177.html for more details about why this is safe. I am intentionally not touching any enums that existed in 0.9.1 at this point in the release cycle. include/libvirt/libvirt.h.in | 30 ++++++++------ src/libvirt.c | 18 ++++---- src/qemu/qemu_driver.c | 84 +++++++++++++++++++++--------------------- tools/virsh.c | 12 +++--- 4 files changed, 74 insertions(+), 70 deletions(-) diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in index 8058229..df213f1 100644 --- a/include/libvirt/libvirt.h.in +++ b/include/libvirt/libvirt.h.in @@ -142,6 +142,23 @@ typedef enum { } virDomainCrashedReason; /** + * virDomainModificationImpact: + * + * Several APIs take flags to determine whether a change to the domain + * affects just the running instance, just the persistent definition, + * or both. The use of VIR_DOMAIN_AFFECT_CURRENT will resolve to + * either VIR_DOMAIN_AFFECT_LIVE or VIR_DOMAIN_AFFECT_CONFIG according + * to current domain state. VIR_DOMAIN_AFFECT_LIVE requires a running + * domain, and VIR_DOMAIN_AFFECT_CONFIG requires a persistent domain + * (whether or not it is running). + */ +typedef enum { + VIR_DOMAIN_AFFECT_CURRENT = 0, /* Affect current domain state. */ + VIR_DOMAIN_AFFECT_LIVE = 1 << 0, /* Affect running domain state. */ + VIR_DOMAIN_AFFECT_CONFIG = 1 << 1, /* Affect persistent domain state. */ +} virDomainModificationImpact; + +/** * virDomainInfoPtr: * * a virDomainInfo is a structure filled by virDomainGetInfo() and extracting @@ -338,12 +355,6 @@ typedef virTypedParameter *virTypedParameterPtr; /* Management of scheduler parameters */ -typedef enum { - VIR_DOMAIN_SCHEDPARAM_CURRENT = 0, /* affect current domain state */ - VIR_DOMAIN_SCHEDPARAM_LIVE = (1 << 0), /* Affect active domain */ - VIR_DOMAIN_SCHEDPARAM_CONFIG = (1 << 1), /* Affect next boot */ -} virDomainSchedParameterFlags; - /* * Fetch scheduler parameters, caller allocates 'params' field of size 'nparams' */ @@ -799,13 +810,6 @@ int virDomainGetBlkioParameters(virDomainPtr domain, /* Manage memory parameters. */ -/* flags for setting memory parameters */ -typedef enum { - VIR_DOMAIN_MEMORY_PARAM_CURRENT = 0, /* affect current domain state */ - VIR_DOMAIN_MEMORY_PARAM_LIVE = (1 << 0), /* affect active domain */ - VIR_DOMAIN_MEMORY_PARAM_CONFIG = (1 << 1) /* affect next boot */ -} virMemoryParamFlags; - /** * VIR_DOMAIN_MEMORY_PARAM_UNLIMITED: * diff --git a/src/libvirt.c b/src/libvirt.c index eaae0ec..cbe1926 100644 --- a/src/libvirt.c +++ b/src/libvirt.c @@ -2994,7 +2994,7 @@ error: * @params: pointer to memory parameter objects * @nparams: number of memory parameter (this value can be the same or * less than the number of parameters supported) - * @flags: currently unused, for future extension + * @flags: bitwise-OR of virDomainModificationImpact * * Change all or a subset of the memory tunables. * This function requires privileged access to the hypervisor. @@ -3049,7 +3049,7 @@ error: * @params: pointer to memory parameter object * (return value, allocated by the caller) * @nparams: pointer to number of memory parameters - * @flags: currently unused, for future extension + * @flags: one of virDomainModificationImpact * * Get all memory parameters, the @params array will be filled with the values * equal to the number of parameters suggested by @nparams @@ -5480,13 +5480,13 @@ error: * @nparams: pointer to number of scheduler parameter * (this value should be same than the returned value * nparams of virDomainGetSchedulerType) - * @flags: virDomainSchedParameterFlags + * @flags: one of virDomainModificationImpact * * Get the scheduler parameters, the @params array will be filled with the * values. * - * The value of @flags can be exactly VIR_DOMAIN_SCHEDPARAM_CURRENT, - * VIR_DOMAIN_SCHEDPARAM_LIVE, or VIR_DOMAIN_SCHEDPARAM_CONFIG. + * The value of @flags can be exactly VIR_DOMAIN_AFFECT_CURRENT, + * VIR_DOMAIN_AFFECT_LIVE, or VIR_DOMAIN_AFFECT_CONFIG. * * Returns -1 in case of error, 0 in case of success. */ @@ -5596,12 +5596,12 @@ error: * @nparams: number of scheduler parameter objects * (this value can be the same or less than the returned value * nparams of virDomainGetSchedulerType) - * @flags: virDomainSchedParameterFlags + * @flags: bitwise-OR of virDomainModificationImpact * * Change a subset or all scheduler parameters. The value of @flags - * should be either VIR_DOMAIN_SCHEDPARAM_CURRENT, or a bitwise-or of - * values from VIR_DOMAIN_SCHEDPARAM_LIVE and - * VIR_DOMAIN_SCHEDPARAM_CURRENT, although hypervisors vary in which + * should be either VIR_DOMAIN_AFFECT_CURRENT, or a bitwise-or of + * values from VIR_DOMAIN_AFFECT_LIVE and + * VIR_DOMAIN_AFFECT_CURRENT, although hypervisors vary in which * flags are supported. * * Returns -1 in case of error, 0 in case of success. diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index ec23bb3..2957467 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -4921,8 +4921,8 @@ static int qemuDomainSetMemoryParameters(virDomainPtr dom, int ret = -1; bool isActive; - virCheckFlags(VIR_DOMAIN_MEMORY_PARAM_LIVE | - VIR_DOMAIN_MEMORY_PARAM_CONFIG, -1); + virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | + VIR_DOMAIN_AFFECT_CONFIG, -1); qemuDriverLock(driver); @@ -4936,14 +4936,14 @@ static int qemuDomainSetMemoryParameters(virDomainPtr dom, isActive = virDomainObjIsActive(vm); - if (flags == VIR_DOMAIN_MEMORY_PARAM_CURRENT) { + if (flags == VIR_DOMAIN_AFFECT_CURRENT) { if (isActive) - flags = VIR_DOMAIN_MEMORY_PARAM_LIVE; + flags = VIR_DOMAIN_AFFECT_LIVE; else - flags = VIR_DOMAIN_MEMORY_PARAM_CONFIG; + flags = VIR_DOMAIN_AFFECT_CONFIG; } - if (flags & VIR_DOMAIN_MEMORY_PARAM_LIVE) { + if (flags & VIR_DOMAIN_AFFECT_LIVE) { if (!isActive) { qemuReportError(VIR_ERR_OPERATION_INVALID, "%s", _("domain is not running")); @@ -4963,7 +4963,7 @@ static int qemuDomainSetMemoryParameters(virDomainPtr dom, } } - if (flags & VIR_DOMAIN_MEMORY_PARAM_CONFIG) { + if (flags & VIR_DOMAIN_AFFECT_CONFIG) { if (!vm->persistent) { qemuReportError(VIR_ERR_OPERATION_INVALID, "%s", _("cannot change persistent config of a transient domain")); @@ -4986,7 +4986,7 @@ static int qemuDomainSetMemoryParameters(virDomainPtr dom, continue; } - if (flags & VIR_DOMAIN_MEMORY_PARAM_LIVE) { + if (flags & VIR_DOMAIN_AFFECT_LIVE) { rc = virCgroupSetMemoryHardLimit(group, params[i].value.ul); if (rc != 0) { virReportSystemError(-rc, "%s", @@ -4995,7 +4995,7 @@ static int qemuDomainSetMemoryParameters(virDomainPtr dom, } } - if (flags & VIR_DOMAIN_MEMORY_PARAM_CONFIG) { + if (flags & VIR_DOMAIN_AFFECT_CONFIG) { persistentDef->mem.hard_limit = params[i].value.ul; } } else if (STREQ(param->field, VIR_DOMAIN_MEMORY_SOFT_LIMIT)) { @@ -5007,7 +5007,7 @@ static int qemuDomainSetMemoryParameters(virDomainPtr dom, continue; } - if (flags & VIR_DOMAIN_MEMORY_PARAM_LIVE) { + if (flags & VIR_DOMAIN_AFFECT_LIVE) { rc = virCgroupSetMemorySoftLimit(group, params[i].value.ul); if (rc != 0) { virReportSystemError(-rc, "%s", @@ -5016,7 +5016,7 @@ static int qemuDomainSetMemoryParameters(virDomainPtr dom, } } - if (flags & VIR_DOMAIN_MEMORY_PARAM_CONFIG) { + if (flags & VIR_DOMAIN_AFFECT_CONFIG) { persistentDef->mem.soft_limit = params[i].value.ul; } } else if (STREQ(param->field, VIR_DOMAIN_MEMORY_SWAP_HARD_LIMIT)) { @@ -5028,7 +5028,7 @@ static int qemuDomainSetMemoryParameters(virDomainPtr dom, continue; } - if (flags & VIR_DOMAIN_MEMORY_PARAM_LIVE) { + if (flags & VIR_DOMAIN_AFFECT_LIVE) { rc = virCgroupSetMemSwapHardLimit(group, params[i].value.ul); if (rc != 0) { virReportSystemError(-rc, "%s", @@ -5036,7 +5036,7 @@ static int qemuDomainSetMemoryParameters(virDomainPtr dom, ret = -1; } } - if (flags & VIR_DOMAIN_MEMORY_PARAM_CONFIG) { + if (flags & VIR_DOMAIN_AFFECT_CONFIG) { persistentDef->mem.swap_hard_limit = params[i].value.ul; } } else if (STREQ(param->field, VIR_DOMAIN_MEMORY_MIN_GUARANTEE)) { @@ -5050,7 +5050,7 @@ static int qemuDomainSetMemoryParameters(virDomainPtr dom, } } - if (flags & VIR_DOMAIN_MEMORY_PARAM_CONFIG) { + if (flags & VIR_DOMAIN_AFFECT_CONFIG) { ret = virDomainSaveConfig(driver->configDir, persistentDef); } @@ -5077,8 +5077,8 @@ static int qemuDomainGetMemoryParameters(virDomainPtr dom, int rc; bool isActive; - virCheckFlags(VIR_DOMAIN_MEMORY_PARAM_LIVE | - VIR_DOMAIN_MEMORY_PARAM_CONFIG, -1); + virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | + VIR_DOMAIN_AFFECT_CONFIG, -1); qemuDriverLock(driver); @@ -5092,14 +5092,14 @@ static int qemuDomainGetMemoryParameters(virDomainPtr dom, isActive = virDomainObjIsActive(vm); - if (flags == VIR_DOMAIN_MEMORY_PARAM_CURRENT) { + if (flags == VIR_DOMAIN_AFFECT_CURRENT) { if (isActive) - flags = VIR_DOMAIN_MEMORY_PARAM_LIVE; + flags = VIR_DOMAIN_AFFECT_LIVE; else - flags = VIR_DOMAIN_MEMORY_PARAM_CONFIG; + flags = VIR_DOMAIN_AFFECT_CONFIG; } - if (flags & VIR_DOMAIN_MEMORY_PARAM_LIVE) { + if (flags & VIR_DOMAIN_AFFECT_LIVE) { if (!isActive) { qemuReportError(VIR_ERR_OPERATION_INVALID, "%s", _("domain is not running")); @@ -5119,7 +5119,7 @@ static int qemuDomainGetMemoryParameters(virDomainPtr dom, } } - if (flags & VIR_DOMAIN_MEMORY_PARAM_CONFIG) { + if (flags & VIR_DOMAIN_AFFECT_CONFIG) { if (!vm->persistent) { qemuReportError(VIR_ERR_OPERATION_INVALID, "%s", _("cannot change persistent config of a transient domain")); @@ -5142,12 +5142,12 @@ static int qemuDomainGetMemoryParameters(virDomainPtr dom, goto cleanup; } - if (flags & VIR_DOMAIN_MEMORY_PARAM_CONFIG) { + if (flags & VIR_DOMAIN_AFFECT_CONFIG) { for (i = 0; i < *nparams; i++) { virMemoryParameterPtr param = ¶ms[i]; val = 0; param->value.ul = 0; - param->type = VIR_DOMAIN_MEMORY_PARAM_ULLONG; + param->type = VIR_TYPED_PARAM_ULLONG; switch (i) { case 0: /* fill memory hard limit here */ @@ -5269,8 +5269,8 @@ static int qemuSetSchedulerParametersFlags(virDomainPtr dom, int ret = -1; bool isActive; - virCheckFlags(VIR_DOMAIN_SCHEDPARAM_LIVE | - VIR_DOMAIN_SCHEDPARAM_CONFIG, -1); + virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | + VIR_DOMAIN_AFFECT_CONFIG, -1); qemuDriverLock(driver); @@ -5284,20 +5284,20 @@ static int qemuSetSchedulerParametersFlags(virDomainPtr dom, isActive = virDomainObjIsActive(vm); - if (flags == VIR_DOMAIN_SCHEDPARAM_CURRENT) { + if (flags == VIR_DOMAIN_AFFECT_CURRENT) { if (isActive) - flags = VIR_DOMAIN_SCHEDPARAM_LIVE; + flags = VIR_DOMAIN_AFFECT_LIVE; else - flags = VIR_DOMAIN_SCHEDPARAM_CONFIG; + flags = VIR_DOMAIN_AFFECT_CONFIG; } - if ((flags & VIR_DOMAIN_SCHEDPARAM_CONFIG) && !vm->persistent) { + if ((flags & VIR_DOMAIN_AFFECT_CONFIG) && !vm->persistent) { qemuReportError(VIR_ERR_OPERATION_INVALID, "%s", _("cannot change persistent config of a transient domain")); goto cleanup; } - if (flags & VIR_DOMAIN_SCHEDPARAM_LIVE) { + if (flags & VIR_DOMAIN_AFFECT_LIVE) { if (!isActive) { qemuReportError(VIR_ERR_OPERATION_INVALID, "%s", _("domain is not running")); @@ -5328,7 +5328,7 @@ static int qemuSetSchedulerParametersFlags(virDomainPtr dom, goto cleanup; } - if (flags & VIR_DOMAIN_SCHEDPARAM_LIVE) { + if (flags & VIR_DOMAIN_AFFECT_LIVE) { rc = virCgroupSetCpuShares(group, params[i].value.ul); if (rc != 0) { virReportSystemError(-rc, "%s", @@ -5339,7 +5339,7 @@ static int qemuSetSchedulerParametersFlags(virDomainPtr dom, vm->def->cputune.shares = params[i].value.ul; } - if (flags & VIR_DOMAIN_SCHEDPARAM_CONFIG) { + if (flags & VIR_DOMAIN_AFFECT_CONFIG) { persistentDef = virDomainObjGetPersistentDef(driver->caps, vm); if (!persistentDef) { qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s", @@ -5378,7 +5378,7 @@ static int qemuSetSchedulerParameters(virDomainPtr dom, return qemuSetSchedulerParametersFlags(dom, params, nparams, - VIR_DOMAIN_SCHEDPARAM_LIVE); + VIR_DOMAIN_AFFECT_LIVE); } static int @@ -5395,11 +5395,11 @@ qemuGetSchedulerParametersFlags(virDomainPtr dom, int rc; bool isActive; - virCheckFlags(VIR_DOMAIN_SCHEDPARAM_LIVE | - VIR_DOMAIN_SCHEDPARAM_CONFIG, -1); + virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | + VIR_DOMAIN_AFFECT_CONFIG, -1); - if ((flags & (VIR_DOMAIN_SCHEDPARAM_LIVE | VIR_DOMAIN_SCHEDPARAM_CONFIG)) == - (VIR_DOMAIN_SCHEDPARAM_LIVE | VIR_DOMAIN_SCHEDPARAM_CONFIG)) { + if ((flags & (VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG)) == + (VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG)) { qemuReportError(VIR_ERR_INVALID_ARG, "%s", _("cannot query live and config together")); goto cleanup; @@ -5422,14 +5422,14 @@ qemuGetSchedulerParametersFlags(virDomainPtr dom, isActive = virDomainObjIsActive(vm); - if (flags == VIR_DOMAIN_SCHEDPARAM_CURRENT) { + if (flags == VIR_DOMAIN_AFFECT_CURRENT) { if (isActive) - flags = VIR_DOMAIN_SCHEDPARAM_LIVE; + flags = VIR_DOMAIN_AFFECT_LIVE; else - flags = VIR_DOMAIN_SCHEDPARAM_CONFIG; + flags = VIR_DOMAIN_AFFECT_CONFIG; } - if (flags & VIR_DOMAIN_SCHEDPARAM_CONFIG) { + if (flags & VIR_DOMAIN_AFFECT_CONFIG) { if (!vm->persistent) { qemuReportError(VIR_ERR_OPERATION_INVALID, "%s", _("cannot query persistent config of a transient domain")); @@ -5502,7 +5502,7 @@ qemuGetSchedulerParameters(virDomainPtr dom, int *nparams) { return qemuGetSchedulerParametersFlags(dom, params, nparams, - VIR_DOMAIN_SCHEDPARAM_CURRENT); + VIR_DOMAIN_AFFECT_CURRENT); } /* This uses the 'info blockstats' monitor command which was diff --git a/tools/virsh.c b/tools/virsh.c index 5679a2d..d98be1c 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -1732,12 +1732,12 @@ cmdSchedinfo(vshControl *ctl, const vshCmd *cmd) vshError(ctl, "%s", _("--current must be specified exclusively")); return false; } - flags = VIR_DOMAIN_SCHEDPARAM_CURRENT; + flags = VIR_DOMAIN_AFFECT_CURRENT; } else { if (config) - flags |= VIR_DOMAIN_SCHEDPARAM_CONFIG; + flags |= VIR_DOMAIN_AFFECT_CONFIG; if (live) - flags |= VIR_DOMAIN_SCHEDPARAM_LIVE; + flags |= VIR_DOMAIN_AFFECT_LIVE; } if (!vshConnectionUsability(ctl, ctl->conn)) @@ -3505,12 +3505,12 @@ cmdMemtune(vshControl * ctl, const vshCmd * cmd) vshError(ctl, "%s", _("--current must be specified exclusively")); return false; } - flags = VIR_DOMAIN_MEMORY_PARAM_CURRENT; + flags = VIR_DOMAIN_AFFECT_CURRENT; } else { if (config) - flags |= VIR_DOMAIN_MEMORY_PARAM_CONFIG; + flags |= VIR_DOMAIN_AFFECT_CONFIG; if (live) - flags |= VIR_DOMAIN_MEMORY_PARAM_LIVE; + flags |= VIR_DOMAIN_AFFECT_LIVE; } if (!vshConnectionUsability(ctl, ctl->conn)) -- 1.7.4.4

On Fri, Jun 03, 2011 at 10:10:58AM -0600, Eric Blake wrote:
This commit is safe precisely because there has been no release for any of the enum values being deleted (they were added post-0.9.1).
After the 0.9.2 release, we can then take advantage of virDomainModificationImpact in more places.
* include/libvirt/libvirt.h.in (virDomainModificationImpact): New enum. (virDomainSchedParameterFlags, virMemoryParamFlags): Delete, since these were never released, and the new enum works fine here. * src/libvirt.c (virDomainGetMemoryParameters) (virDomainSetMemoryParameters) (virDomainGetSchedulerParametersFlags) (virDomainSetSchedulerParametersFlags): Update documentation. * src/qemu/qemu_driver.c (qemuDomainSetMemoryParameters) (qemuDomainGetMemoryParameters, qemuSetSchedulerParametersFlags) (qemuSetSchedulerParameters, qemuGetSchedulerParametersFlags) (qemuGetSchedulerParameters): Adjust clients. * tools/virsh.c (cmdSchedinfo, cmdMemtune): Likewise. Based on ideas by Daniel Veillard and Hu Tao. ---
This has to be applied before 0.9.2 if we like the idea.
See https://www.redhat.com/archives/libvir-list/2011-June/msg00177.html for more details about why this is safe. I am intentionally not touching any enums that existed in 0.9.1 at this point in the release cycle.
include/libvirt/libvirt.h.in | 30 ++++++++------ src/libvirt.c | 18 ++++---- src/qemu/qemu_driver.c | 84 +++++++++++++++++++++--------------------- tools/virsh.c | 12 +++--- 4 files changed, 74 insertions(+), 70 deletions(-)
diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in index 8058229..df213f1 100644 --- a/include/libvirt/libvirt.h.in +++ b/include/libvirt/libvirt.h.in @@ -142,6 +142,23 @@ typedef enum { } virDomainCrashedReason;
/** + * virDomainModificationImpact: + * + * Several APIs take flags to determine whether a change to the domain + * affects just the running instance, just the persistent definition, + * or both. The use of VIR_DOMAIN_AFFECT_CURRENT will resolve to + * either VIR_DOMAIN_AFFECT_LIVE or VIR_DOMAIN_AFFECT_CONFIG according + * to current domain state. VIR_DOMAIN_AFFECT_LIVE requires a running + * domain, and VIR_DOMAIN_AFFECT_CONFIG requires a persistent domain + * (whether or not it is running). + */ +typedef enum { + VIR_DOMAIN_AFFECT_CURRENT = 0, /* Affect current domain state. */ + VIR_DOMAIN_AFFECT_LIVE = 1 << 0, /* Affect running domain state. */ + VIR_DOMAIN_AFFECT_CONFIG = 1 << 1, /* Affect persistent domain state. */ +} virDomainModificationImpact; + +/** * virDomainInfoPtr: * * a virDomainInfo is a structure filled by virDomainGetInfo() and extracting @@ -338,12 +355,6 @@ typedef virTypedParameter *virTypedParameterPtr;
/* Management of scheduler parameters */
-typedef enum { - VIR_DOMAIN_SCHEDPARAM_CURRENT = 0, /* affect current domain state */ - VIR_DOMAIN_SCHEDPARAM_LIVE = (1 << 0), /* Affect active domain */ - VIR_DOMAIN_SCHEDPARAM_CONFIG = (1 << 1), /* Affect next boot */ -} virDomainSchedParameterFlags; - /* * Fetch scheduler parameters, caller allocates 'params' field of size 'nparams' */ @@ -799,13 +810,6 @@ int virDomainGetBlkioParameters(virDomainPtr domain,
/* Manage memory parameters. */
-/* flags for setting memory parameters */ -typedef enum { - VIR_DOMAIN_MEMORY_PARAM_CURRENT = 0, /* affect current domain state */ - VIR_DOMAIN_MEMORY_PARAM_LIVE = (1 << 0), /* affect active domain */ - VIR_DOMAIN_MEMORY_PARAM_CONFIG = (1 << 1) /* affect next boot */ -} virMemoryParamFlags; - /** * VIR_DOMAIN_MEMORY_PARAM_UNLIMITED: *
ACK, as stated before I think it's a good step to try to make the API more uniform across similar calls, and since there is more coming we should really do this, Please push before 0.9.2 (I will do it if not done before tomorrow evening my time), thanks ! Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ daniel@veillard.com | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/

2011/6/4 Daniel Veillard <veillard@redhat.com>:
On Fri, Jun 03, 2011 at 10:10:58AM -0600, Eric Blake wrote:
This commit is safe precisely because there has been no release for any of the enum values being deleted (they were added post-0.9.1).
After the 0.9.2 release, we can then take advantage of virDomainModificationImpact in more places.
* include/libvirt/libvirt.h.in (virDomainModificationImpact): New enum. (virDomainSchedParameterFlags, virMemoryParamFlags): Delete, since these were never released, and the new enum works fine here. * src/libvirt.c (virDomainGetMemoryParameters) (virDomainSetMemoryParameters) (virDomainGetSchedulerParametersFlags) (virDomainSetSchedulerParametersFlags): Update documentation. * src/qemu/qemu_driver.c (qemuDomainSetMemoryParameters) (qemuDomainGetMemoryParameters, qemuSetSchedulerParametersFlags) (qemuSetSchedulerParameters, qemuGetSchedulerParametersFlags) (qemuGetSchedulerParameters): Adjust clients. * tools/virsh.c (cmdSchedinfo, cmdMemtune): Likewise. Based on ideas by Daniel Veillard and Hu Tao. ---
This has to be applied before 0.9.2 if we like the idea.
See https://www.redhat.com/archives/libvir-list/2011-June/msg00177.html for more details about why this is safe. I am intentionally not touching any enums that existed in 0.9.1 at this point in the release cycle.
include/libvirt/libvirt.h.in | 30 ++++++++------ src/libvirt.c | 18 ++++---- src/qemu/qemu_driver.c | 84 +++++++++++++++++++++--------------------- tools/virsh.c | 12 +++--- 4 files changed, 74 insertions(+), 70 deletions(-)
diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in index 8058229..df213f1 100644 --- a/include/libvirt/libvirt.h.in +++ b/include/libvirt/libvirt.h.in @@ -142,6 +142,23 @@ typedef enum { } virDomainCrashedReason;
/** + * virDomainModificationImpact: + * + * Several APIs take flags to determine whether a change to the domain + * affects just the running instance, just the persistent definition, + * or both. The use of VIR_DOMAIN_AFFECT_CURRENT will resolve to + * either VIR_DOMAIN_AFFECT_LIVE or VIR_DOMAIN_AFFECT_CONFIG according + * to current domain state. VIR_DOMAIN_AFFECT_LIVE requires a running + * domain, and VIR_DOMAIN_AFFECT_CONFIG requires a persistent domain + * (whether or not it is running). + */ +typedef enum { + VIR_DOMAIN_AFFECT_CURRENT = 0, /* Affect current domain state. */ + VIR_DOMAIN_AFFECT_LIVE = 1 << 0, /* Affect running domain state. */ + VIR_DOMAIN_AFFECT_CONFIG = 1 << 1, /* Affect persistent domain state. */ +} virDomainModificationImpact; + +/** * virDomainInfoPtr: * * a virDomainInfo is a structure filled by virDomainGetInfo() and extracting @@ -338,12 +355,6 @@ typedef virTypedParameter *virTypedParameterPtr;
/* Management of scheduler parameters */
-typedef enum { - VIR_DOMAIN_SCHEDPARAM_CURRENT = 0, /* affect current domain state */ - VIR_DOMAIN_SCHEDPARAM_LIVE = (1 << 0), /* Affect active domain */ - VIR_DOMAIN_SCHEDPARAM_CONFIG = (1 << 1), /* Affect next boot */ -} virDomainSchedParameterFlags; - /* * Fetch scheduler parameters, caller allocates 'params' field of size 'nparams' */ @@ -799,13 +810,6 @@ int virDomainGetBlkioParameters(virDomainPtr domain,
/* Manage memory parameters. */
-/* flags for setting memory parameters */ -typedef enum { - VIR_DOMAIN_MEMORY_PARAM_CURRENT = 0, /* affect current domain state */ - VIR_DOMAIN_MEMORY_PARAM_LIVE = (1 << 0), /* affect active domain */ - VIR_DOMAIN_MEMORY_PARAM_CONFIG = (1 << 1) /* affect next boot */ -} virMemoryParamFlags; - /** * VIR_DOMAIN_MEMORY_PARAM_UNLIMITED: *
ACK, as stated before I think it's a good step to try to make the API more uniform across similar calls, and since there is more coming we should really do this,
Please push before 0.9.2 (I will do it if not done before tomorrow evening my time),
thanks !
Daniel
Daniel, asked me on IRC to push this, so I did. Matthias

On Sat, Jun 04, 2011 at 10:05:43AM +0200, Matthias Bolte wrote:
2011/6/4 Daniel Veillard <veillard@redhat.com>:
ACK, as stated before I think it's a good step to try to make the API more uniform across similar calls, and since there is more coming we should really do this,
Please push before 0.9.2 (I will do it if not done before tomorrow evening my time),
thanks !
Daniel
Daniel, asked me on IRC to push this, so I did.
Thanks ! Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ daniel@veillard.com | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/
participants (3)
-
Daniel Veillard
-
Eric Blake
-
Matthias Bolte