[libvirt] [PATCHv4 6/6] conf: reject multiple panic devices of same model
Jiri Denemark
jdenemar at redhat.com
Thu Nov 19 22:03:36 UTC 2015
On Fri, Nov 13, 2015 at 20:16:40 +0300, Dmitry Andreev wrote:
> Only one panic device per model is allowed.
> ---
> src/conf/domain_conf.c | 27 +++++++++++++++++++++++++++
> 1 file changed, 27 insertions(+)
>
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 2f17675..b4a46ad 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -3747,6 +3747,30 @@ virDomainDefRejectDuplicateControllers(virDomainDefPtr def)
> return ret;
> }
>
> +static int
> +virDomainDefRejectDuplicatePanics(virDomainDefPtr def)
> +{
> + bool exists[VIR_DOMAIN_PANIC_MODEL_LAST];
> + size_t i;
> +
> + for (i = 0; i < VIR_DOMAIN_PANIC_MODEL_LAST; i++)
> + exists[i] = false;
> +
> + for (i = 0; i < def->npanics; i++) {
> + virDomainPanicModel model = def->panics[i]->model;
> + if (!exists[model]) {
> + exists[model] = true;
Wrong indentation.
> + } else {
> + virReportError(VIR_ERR_XML_ERROR,
> + _("Multiple panic devices with model '%s'"),
> + virDomainPanicModelTypeToString(model));
> + return -1;
> + }
But I think avoiding negative test would make the code a bit more
readable:
if (exists[model]) {
virReportError(...);
return -1;
}
exists[model] = true;
> +
Extra empty line.
> + }
> +
> + return 0;
> +}
>
> /**
> * virDomainDefMetadataSanitize:
> @@ -3976,6 +4000,9 @@ virDomainDefPostParseInternal(virDomainDefPtr def,
> if (virDomainDefRejectDuplicateControllers(def) < 0)
> return -1;
>
> + if (virDomainDefRejectDuplicatePanics(def) < 0)
> + return -1;
> +
> /* verify settings of guest timers */
> for (i = 0; i < def->clock.ntimers; i++) {
> virDomainTimerDefPtr timer = def->clock.timers[i];
Jirka
More information about the libvir-list
mailing list