From c0f90799bc7fa4b690ead6a592806378a243873c Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Tue, 20 Sep 2016 13:59:52 +0200 Subject: [PATCH] domain_conf: Introduce VIR_DOMAIN_DEF_PARSE_SKIP_POST_PARSE This is an internal flag that prevents our two entry points to XML parsing (virDomainDefParse and virDomainDeviceDefParse) from running post parse callbacks. This is expected to be used in cases when we already have full domain/device XML and we are just parsing it back (i.e. virDomainDefCopy or virDomainDeviceDefCopy) Signed-off-by: Michal Privoznik --- src/conf/domain_conf.c | 6 ++++++ src/conf/domain_conf.h | 2 ++ 2 files changed, 8 insertions(+) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index b11a2965ae..a8c4999b9e 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -4428,6 +4428,9 @@ virDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, { int ret; + if (flags & VIR_DOMAIN_DEF_PARSE_SKIP_POST_PARSE) + return 0; + if (xmlopt->config.devicesPostParseCallback) { ret = xmlopt->config.devicesPostParseCallback(dev, def, caps, flags, xmlopt->config.priv, @@ -4577,6 +4580,9 @@ virDomainDefPostParse(virDomainDefPtr def, .parseOpaque = parseOpaque, }; + if (parseFlags & VIR_DOMAIN_DEF_PARSE_SKIP_POST_PARSE) + return 0; + /* this must be done before the hypervisor-specific callback, * in case presence of a controller at a specific index is checked */ diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 7a2d62825d..d2065cf3ed 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2645,6 +2645,8 @@ typedef enum { VIR_DOMAIN_DEF_PARSE_ABI_UPDATE = 1 << 9, /* skip definition validation checks meant to be executed on define time only */ VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE = 1 << 10, + /* skip post parse callback */ + VIR_DOMAIN_DEF_PARSE_SKIP_POST_PARSE = 1 << 11, } virDomainDefParseFlags; typedef enum { -- 2.47.2