for (i = 0; i < nparams; i++) {
temp = ¶ms[i];
- temp->type = VIR_TYPED_PARAM_ULLONG;
/*
* Some magic here, this is used to fill the params structure with
* to the next valid argument and so on.
*/
if (soft_limit) {
- temp->value.ul = soft_limit;
- strncpy(temp->field, VIR_DOMAIN_MEMORY_SOFT_LIMIT,
- sizeof(temp->field));
+ if (virTypedParameterAssign(temp,
+ VIR_DOMAIN_MEMORY_SOFT_LIMIT,
+ VIR_TYPED_PARAM_ULLONG,
+ soft_limit) < 0)
+ goto error;
soft_limit = 0;
} else if (hard_limit) {
- temp->value.ul = hard_limit;
- strncpy(temp->field, VIR_DOMAIN_MEMORY_HARD_LIMIT,
- sizeof(temp->field));
+ if (virTypedParameterAssign(temp,
+ VIR_DOMAIN_MEMORY_HARD_LIMIT,
+ VIR_TYPED_PARAM_ULLONG,
+ hard_limit) < 0)
+ goto error;
hard_limit = 0;
} else if (swap_hard_limit) {
- temp->value.ul = swap_hard_limit;
- strncpy(temp->field, VIR_DOMAIN_MEMORY_SWAP_HARD_LIMIT,
- sizeof(temp->field));
+ if (virTypedParameterAssign(temp,
+ VIR_DOMAIN_MEMORY_SWAP_HARD_LIMIT,
+ VIR_TYPED_PARAM_ULLONG,
+ swap_hard_limit) < 0)
+ goto error;
swap_hard_limit = 0;
} else if (min_guarantee) {
- temp->value.ul = min_guarantee;
- strncpy(temp->field, VIR_DOMAIN_MEMORY_MIN_GUARANTEE,
- sizeof(temp->field));
+ if (virTypedParameterAssign(temp,
+ VIR_DOMAIN_MEMORY_MIN_GUARANTEE,
+ VIR_TYPED_PARAM_ULLONG,
+ min_guarantee) < 0)
+ goto error;
min_guarantee = 0;
}
temp->value.ul = VIR_DOMAIN_MEMORY_PARAM_UNLIMITED;
}
if (virDomainSetMemoryParameters(dom, params, nparams, flags) != 0)
- vshError(ctl, "%s", _("Unable to change memory parameters"));
+ goto error;
else
ret = true;
}
- cleanup:
+cleanup:
VIR_FREE(params);
virDomainFree(dom);
return ret;
+
+error:
+ vshError(ctl, "%s", _("Unable to change memory parameters"));
+ goto cleanup;
}
/*
unsigned long long total_bytes_sec = 0, read_bytes_sec = 0, write_bytes_sec = 0;
unsigned long long total_iops_sec = 0, read_iops_sec = 0, write_iops_sec = 0;
int nparams = 0;
- virTypedParameterPtr params = NULL, temp = NULL;
+ virTypedParameterPtr params = NULL;
unsigned int flags = 0, i = 0;
int rv = 0;
bool current = vshCommandOptBool(cmd, "current");
params = vshCalloc(ctl, nparams, sizeof(*params));
i = 0;
- if (i < nparams && vshCommandOptBool(cmd, "total-bytes-sec")) {
- temp = ¶ms[i];
- temp->type = VIR_TYPED_PARAM_ULLONG;
- strncpy(temp->field, VIR_DOMAIN_BLOCK_IOTUNE_TOTAL_BYTES_SEC,
- sizeof(temp->field));
- temp->value.ul = total_bytes_sec;
- i++;
- }
-
- if (i < nparams && vshCommandOptBool(cmd, "read-bytes-sec")) {
- temp = ¶ms[i];
- temp->type = VIR_TYPED_PARAM_ULLONG;
- strncpy(temp->field, VIR_DOMAIN_BLOCK_IOTUNE_READ_BYTES_SEC,
- sizeof(temp->field));
- temp->value.ul = read_bytes_sec;
- i++;
- }
-
- if (i < nparams && vshCommandOptBool(cmd, "write-bytes-sec")) {
- temp = ¶ms[i];
- temp->type = VIR_TYPED_PARAM_ULLONG;
- strncpy(temp->field, VIR_DOMAIN_BLOCK_IOTUNE_WRITE_BYTES_SEC,
- sizeof(temp->field));
- temp->value.ul = write_bytes_sec;
- i++;
- }
-
- if (i < nparams && vshCommandOptBool(cmd, "total-iops-sec")) {
- temp = ¶ms[i];
- temp->type = VIR_TYPED_PARAM_ULLONG;
- strncpy(temp->field, VIR_DOMAIN_BLOCK_IOTUNE_TOTAL_IOPS_SEC,
- sizeof(temp->field));
- temp->value.ul = total_iops_sec;
- i++;
- }
-
- if (i < nparams && vshCommandOptBool(cmd, "read-iops-sec")) {
- temp = ¶ms[i];
- temp->type = VIR_TYPED_PARAM_ULLONG;
- strncpy(temp->field, VIR_DOMAIN_BLOCK_IOTUNE_READ_IOPS_SEC,
- sizeof(temp->field));
- temp->value.ul = read_iops_sec;
- i++;
- }
-
- if (i < nparams && vshCommandOptBool(cmd, "write-iops-sec")) {
- temp = ¶ms[i];
- temp->type = VIR_TYPED_PARAM_ULLONG;
- strncpy(temp->field, VIR_DOMAIN_BLOCK_IOTUNE_WRITE_IOPS_SEC,
- sizeof(temp->field));
- temp->value.ul = write_iops_sec;
- }
-
- if (virDomainSetBlockIoTune(dom, disk, params, nparams, flags) < 0) {
- vshError(ctl, "%s",
- _("Unable to change block I/O throttle"));
- goto cleanup;
- }
+ if (i < nparams && vshCommandOptBool(cmd, "total-bytes-sec") &&
+ virTypedParameterAssign(¶ms[i++],
+ VIR_DOMAIN_BLOCK_IOTUNE_TOTAL_BYTES_SEC,
+ VIR_TYPED_PARAM_ULLONG,
+ total_bytes_sec) < 0)
+ goto error;
+
+ if (i < nparams && vshCommandOptBool(cmd, "read-bytes-sec") &&
+ virTypedParameterAssign(¶ms[i++],
+ VIR_DOMAIN_BLOCK_IOTUNE_READ_BYTES_SEC,
+ VIR_TYPED_PARAM_ULLONG,
+ read_bytes_sec) < 0)
+ goto error;
+
+ if (i < nparams && vshCommandOptBool(cmd, "write-bytes-sec") &&
+ virTypedParameterAssign(¶ms[i++],
+ VIR_DOMAIN_BLOCK_IOTUNE_WRITE_BYTES_SEC,
+ VIR_TYPED_PARAM_ULLONG,
+ write_bytes_sec) < 0)
+ goto error;
+
+ if (i < nparams && vshCommandOptBool(cmd, "total-iops-sec") &&
+ virTypedParameterAssign(¶ms[i++],
+ VIR_DOMAIN_BLOCK_IOTUNE_TOTAL_IOPS_SEC,
+ VIR_TYPED_PARAM_ULLONG,
+ total_iops_sec) < 0)
+ goto error;
+
+ if (i < nparams && vshCommandOptBool(cmd, "read-iops-sec") &&
+ virTypedParameterAssign(¶ms[i++],
+ VIR_DOMAIN_BLOCK_IOTUNE_READ_IOPS_SEC,
+ VIR_TYPED_PARAM_ULLONG,
+ read_iops_sec) < 0)
+ goto error;
+
+ if (i < nparams && vshCommandOptBool(cmd, "write-iops-sec") &&
+ virTypedParameterAssign(¶ms[i++],
+ VIR_DOMAIN_BLOCK_IOTUNE_WRITE_IOPS_SEC,
+ VIR_TYPED_PARAM_ULLONG,
+ write_iops_sec) < 0)
+ goto error;
+
+ if (virDomainSetBlockIoTune(dom, disk, params, nparams, flags) < 0)
+ goto error;
}
ret = true;
VIR_FREE(params);
virDomainFree(dom);
return ret;
+
+error:
+ vshError(ctl, "%s", _("Unable to change block I/O throttle"));
+ goto cleanup;
}
/*