VIR_DOMAIN_CRASHED_UNKNOWN = 0, /* crashed for unknown reason */
} 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:
*
/* 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'
*/
/* 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:
*
* @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.
* @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
* @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.
*/
* @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.
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);
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"));
}
}
- 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"));
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",
}
}
- 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)) {
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",
}
}
- 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)) {
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",
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)) {
}
}
- if (flags & VIR_DOMAIN_MEMORY_PARAM_CONFIG) {
+ if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
ret = virDomainSaveConfig(driver->configDir, persistentDef);
}
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);
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"));
}
}
- 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"));
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 */
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);
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"));
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",
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",
return qemuSetSchedulerParametersFlags(dom,
params,
nparams,
- VIR_DOMAIN_SCHEDPARAM_LIVE);
+ VIR_DOMAIN_AFFECT_LIVE);
}
static int
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;
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"));
int *nparams)
{
return qemuGetSchedulerParametersFlags(dom, params, nparams,
- VIR_DOMAIN_SCHEDPARAM_CURRENT);
+ VIR_DOMAIN_AFFECT_CURRENT);
}
/* This uses the 'info blockstats' monitor command which was