mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-20 07:59:00 +00:00
virDomainDefPostParse: Introduce @parseOpaque argument
Some callers might want to pass yet another pointer to opaque data to post parse callbacks. The driver generic one is not enough because two threads executing post parse callback might want to see different data (e.g. domain object pointer that domain def belongs to). Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
a21248f46a
commit
940d91c55b
@ -61,7 +61,8 @@ static int
|
||||
bhyveDomainDefPostParse(virDomainDefPtr def,
|
||||
virCapsPtr caps ATTRIBUTE_UNUSED,
|
||||
unsigned int parseFlags ATTRIBUTE_UNUSED,
|
||||
void *opaque ATTRIBUTE_UNUSED)
|
||||
void *opaque ATTRIBUTE_UNUSED,
|
||||
void *parseOpaque ATTRIBUTE_UNUSED)
|
||||
{
|
||||
/* Add an implicit PCI root controller */
|
||||
if (virDomainDefMaybeAddController(def, VIR_DOMAIN_CONTROLLER_TYPE_PCI, 0,
|
||||
|
@ -4562,7 +4562,8 @@ int
|
||||
virDomainDefPostParse(virDomainDefPtr def,
|
||||
virCapsPtr caps,
|
||||
unsigned int parseFlags,
|
||||
virDomainXMLOptionPtr xmlopt)
|
||||
virDomainXMLOptionPtr xmlopt,
|
||||
void *parseOpaque)
|
||||
{
|
||||
int ret;
|
||||
struct virDomainDefPostParseDeviceIteratorData data = {
|
||||
@ -4579,7 +4580,8 @@ virDomainDefPostParse(virDomainDefPtr def,
|
||||
/* call the domain config callback */
|
||||
if (xmlopt->config.domainPostParseCallback) {
|
||||
ret = xmlopt->config.domainPostParseCallback(def, caps, parseFlags,
|
||||
xmlopt->config.priv);
|
||||
xmlopt->config.priv,
|
||||
parseOpaque);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
@ -17626,7 +17628,7 @@ virDomainDefParseXML(xmlDocPtr xml,
|
||||
goto error;
|
||||
|
||||
/* callback to fill driver specific domain aspects */
|
||||
if (virDomainDefPostParse(def, caps, flags, xmlopt) < 0)
|
||||
if (virDomainDefPostParse(def, caps, flags, xmlopt, NULL) < 0)
|
||||
goto error;
|
||||
|
||||
/* valdiate configuration */
|
||||
|
@ -2361,11 +2361,15 @@ typedef struct _virDomainXMLOption virDomainXMLOption;
|
||||
typedef virDomainXMLOption *virDomainXMLOptionPtr;
|
||||
|
||||
/* Called once after everything else has been parsed, for adjusting
|
||||
* overall domain defaults. */
|
||||
* overall domain defaults.
|
||||
* @parseOpaque is opaque data passed by virDomainDefParse* caller,
|
||||
* @opaque is opaque data set by driver (usually pointer to driver
|
||||
* private data). */
|
||||
typedef int (*virDomainDefPostParseCallback)(virDomainDefPtr def,
|
||||
virCapsPtr caps,
|
||||
unsigned int parseFlags,
|
||||
void *opaque);
|
||||
void *opaque,
|
||||
void *parseOpaque);
|
||||
/* Called once per device, for adjusting per-device settings while
|
||||
* leaving the overall domain otherwise unchanged. */
|
||||
typedef int (*virDomainDeviceDefPostParseCallback)(virDomainDeviceDefPtr dev,
|
||||
@ -2447,11 +2451,11 @@ virDomainXMLNamespacePtr
|
||||
virDomainXMLOptionGetNamespace(virDomainXMLOptionPtr xmlopt)
|
||||
ATTRIBUTE_NONNULL(1);
|
||||
|
||||
int
|
||||
virDomainDefPostParse(virDomainDefPtr def,
|
||||
virCapsPtr caps,
|
||||
unsigned int parseFlags,
|
||||
virDomainXMLOptionPtr xmlopt);
|
||||
int virDomainDefPostParse(virDomainDefPtr def,
|
||||
virCapsPtr caps,
|
||||
unsigned int parseFlags,
|
||||
virDomainXMLOptionPtr xmlopt,
|
||||
void *parseOpaque);
|
||||
|
||||
int virDomainDefValidate(virDomainDefPtr def,
|
||||
virCapsPtr caps,
|
||||
|
@ -380,7 +380,8 @@ static int
|
||||
libxlDomainDefPostParse(virDomainDefPtr def,
|
||||
virCapsPtr caps ATTRIBUTE_UNUSED,
|
||||
unsigned int parseFlags ATTRIBUTE_UNUSED,
|
||||
void *opaque ATTRIBUTE_UNUSED)
|
||||
void *opaque ATTRIBUTE_UNUSED,
|
||||
void *parseOpaque ATTRIBUTE_UNUSED)
|
||||
{
|
||||
/* Xen PV domains always have a PV console, so add one to the domain config
|
||||
* via post-parse callback if not explicitly specified in the XML. */
|
||||
|
@ -364,7 +364,8 @@ static int
|
||||
virLXCDomainDefPostParse(virDomainDefPtr def,
|
||||
virCapsPtr caps,
|
||||
unsigned int parseFlags ATTRIBUTE_UNUSED,
|
||||
void *opaque ATTRIBUTE_UNUSED)
|
||||
void *opaque ATTRIBUTE_UNUSED,
|
||||
void *parseOpaque ATTRIBUTE_UNUSED)
|
||||
{
|
||||
/* check for emulator and create a default one if needed */
|
||||
if (!def->emulator &&
|
||||
|
@ -1095,7 +1095,7 @@ lxcParseConfigString(const char *config,
|
||||
lxcSetCapDrop(vmdef, properties);
|
||||
|
||||
if (virDomainDefPostParse(vmdef, caps, VIR_DOMAIN_DEF_PARSE_ABI_UPDATE,
|
||||
xmlopt) < 0)
|
||||
xmlopt, NULL) < 0)
|
||||
goto cleanup;
|
||||
|
||||
goto cleanup;
|
||||
|
@ -92,7 +92,8 @@ static int
|
||||
openvzDomainDefPostParse(virDomainDefPtr def,
|
||||
virCapsPtr caps ATTRIBUTE_UNUSED,
|
||||
unsigned int parseFlags ATTRIBUTE_UNUSED,
|
||||
void *opaque ATTRIBUTE_UNUSED)
|
||||
void *opaque ATTRIBUTE_UNUSED,
|
||||
void *parseOpaque ATTRIBUTE_UNUSED)
|
||||
{
|
||||
/* fill the init path */
|
||||
if (def->os.type == VIR_DOMAIN_OSTYPE_EXE && !def->os.init) {
|
||||
|
@ -1097,7 +1097,8 @@ static int
|
||||
phypDomainDefPostParse(virDomainDefPtr def ATTRIBUTE_UNUSED,
|
||||
virCapsPtr caps ATTRIBUTE_UNUSED,
|
||||
unsigned int parseFlags ATTRIBUTE_UNUSED,
|
||||
void *opaque ATTRIBUTE_UNUSED)
|
||||
void *opaque ATTRIBUTE_UNUSED,
|
||||
void *parseOpaque ATTRIBUTE_UNUSED)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
@ -2326,7 +2326,8 @@ static int
|
||||
qemuDomainDefPostParse(virDomainDefPtr def,
|
||||
virCapsPtr caps,
|
||||
unsigned int parseFlags,
|
||||
void *opaque)
|
||||
void *opaque,
|
||||
void *parseOpaque ATTRIBUTE_UNUSED)
|
||||
{
|
||||
virQEMUDriverPtr driver = opaque;
|
||||
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
|
||||
|
@ -7920,7 +7920,7 @@ qemuDomainAttachDeviceConfig(virDomainDefPtr vmdef,
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (virDomainDefPostParse(vmdef, caps, parse_flags, xmlopt) < 0)
|
||||
if (virDomainDefPostParse(vmdef, caps, parse_flags, xmlopt, NULL) < 0)
|
||||
return -1;
|
||||
|
||||
return 0;
|
||||
@ -8077,7 +8077,7 @@ qemuDomainDetachDeviceConfig(virDomainDefPtr vmdef,
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (virDomainDefPostParse(vmdef, caps, parse_flags, xmlopt) < 0)
|
||||
if (virDomainDefPostParse(vmdef, caps, parse_flags, xmlopt, NULL) < 0)
|
||||
return -1;
|
||||
|
||||
return 0;
|
||||
@ -8176,7 +8176,7 @@ qemuDomainUpdateDeviceConfig(virDomainDefPtr vmdef,
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (virDomainDefPostParse(vmdef, caps, parse_flags, xmlopt) < 0)
|
||||
if (virDomainDefPostParse(vmdef, caps, parse_flags, xmlopt, NULL) < 0)
|
||||
return -1;
|
||||
|
||||
return 0;
|
||||
|
@ -2628,7 +2628,7 @@ qemuParseCommandLine(virCapsPtr caps,
|
||||
|
||||
VIR_FREE(nics);
|
||||
|
||||
if (virDomainDefPostParse(def, caps, 0, xmlopt) < 0)
|
||||
if (virDomainDefPostParse(def, caps, 0, xmlopt, NULL) < 0)
|
||||
goto error;
|
||||
|
||||
if (cmd->num_args || cmd->num_env) {
|
||||
|
@ -435,7 +435,8 @@ static int
|
||||
umlDomainDefPostParse(virDomainDefPtr def ATTRIBUTE_UNUSED,
|
||||
virCapsPtr caps ATTRIBUTE_UNUSED,
|
||||
unsigned int parseFlags ATTRIBUTE_UNUSED,
|
||||
void *opaque ATTRIBUTE_UNUSED)
|
||||
void *opaque ATTRIBUTE_UNUSED,
|
||||
void *parseOpaque ATTRIBUTE_UNUSED)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
@ -255,7 +255,8 @@ static int
|
||||
vboxDomainDefPostParse(virDomainDefPtr def ATTRIBUTE_UNUSED,
|
||||
virCapsPtr caps ATTRIBUTE_UNUSED,
|
||||
unsigned int parseFlags ATTRIBUTE_UNUSED,
|
||||
void *opaque ATTRIBUTE_UNUSED)
|
||||
void *opaque ATTRIBUTE_UNUSED,
|
||||
void *parseOpaque ATTRIBUTE_UNUSED)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
@ -86,7 +86,8 @@ static int
|
||||
vmwareDomainDefPostParse(virDomainDefPtr def ATTRIBUTE_UNUSED,
|
||||
virCapsPtr caps ATTRIBUTE_UNUSED,
|
||||
unsigned int parseFlags ATTRIBUTE_UNUSED,
|
||||
void *opaque ATTRIBUTE_UNUSED)
|
||||
void *opaque ATTRIBUTE_UNUSED,
|
||||
void *parseOpaque ATTRIBUTE_UNUSED)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
@ -528,7 +528,8 @@ static int
|
||||
virVMXDomainDefPostParse(virDomainDefPtr def ATTRIBUTE_UNUSED,
|
||||
virCapsPtr caps ATTRIBUTE_UNUSED,
|
||||
unsigned int parseFlags ATTRIBUTE_UNUSED,
|
||||
void *opaque ATTRIBUTE_UNUSED)
|
||||
void *opaque ATTRIBUTE_UNUSED,
|
||||
void *parseOpaque ATTRIBUTE_UNUSED)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
@ -1817,7 +1818,7 @@ virVMXParseConfig(virVMXContext *ctx,
|
||||
}
|
||||
|
||||
if (virDomainDefPostParse(def, caps, VIR_DOMAIN_DEF_PARSE_ABI_UPDATE,
|
||||
xmlopt) < 0)
|
||||
xmlopt, NULL) < 0)
|
||||
goto cleanup;
|
||||
|
||||
success = true;
|
||||
|
@ -263,7 +263,8 @@ static int
|
||||
vzDomainDefPostParse(virDomainDefPtr def,
|
||||
virCapsPtr caps ATTRIBUTE_UNUSED,
|
||||
unsigned int parseFlags ATTRIBUTE_UNUSED,
|
||||
void *opaque ATTRIBUTE_UNUSED)
|
||||
void *opaque ATTRIBUTE_UNUSED,
|
||||
void *parseOpaque ATTRIBUTE_UNUSED)
|
||||
{
|
||||
if (vzDomainDefAddDefaultInputDevices(def) < 0)
|
||||
return -1;
|
||||
|
@ -370,7 +370,8 @@ static int
|
||||
xenDomainDefPostParse(virDomainDefPtr def,
|
||||
virCapsPtr caps ATTRIBUTE_UNUSED,
|
||||
unsigned int parseFlags ATTRIBUTE_UNUSED,
|
||||
void *opaque ATTRIBUTE_UNUSED)
|
||||
void *opaque ATTRIBUTE_UNUSED,
|
||||
void *parseOpaque ATTRIBUTE_UNUSED)
|
||||
{
|
||||
if (!def->memballoon) {
|
||||
virDomainMemballoonDefPtr memballoon;
|
||||
|
@ -75,7 +75,8 @@ static int
|
||||
xenapiDomainDefPostParse(virDomainDefPtr def,
|
||||
virCapsPtr caps ATTRIBUTE_UNUSED,
|
||||
unsigned int parseFlags ATTRIBUTE_UNUSED,
|
||||
void *opaque ATTRIBUTE_UNUSED)
|
||||
void *opaque ATTRIBUTE_UNUSED,
|
||||
void *parseOpaque ATTRIBUTE_UNUSED)
|
||||
{
|
||||
/* add implicit input device */
|
||||
if (xenDomainDefAddImplicitInputDevice(def) < 0)
|
||||
|
@ -1458,7 +1458,7 @@ xenParseSxpr(const struct sexpr *root,
|
||||
}
|
||||
|
||||
if (virDomainDefPostParse(def, caps, VIR_DOMAIN_DEF_PARSE_ABI_UPDATE,
|
||||
xmlopt) < 0)
|
||||
xmlopt, NULL) < 0)
|
||||
goto error;
|
||||
|
||||
return def;
|
||||
|
@ -721,7 +721,7 @@ xenParseXL(virConfPtr conf,
|
||||
goto cleanup;
|
||||
|
||||
if (virDomainDefPostParse(def, caps, VIR_DOMAIN_DEF_PARSE_ABI_UPDATE,
|
||||
xmlopt) < 0)
|
||||
xmlopt, NULL) < 0)
|
||||
goto cleanup;
|
||||
|
||||
return def;
|
||||
|
@ -461,7 +461,7 @@ xenParseXM(virConfPtr conf,
|
||||
goto cleanup;
|
||||
|
||||
if (virDomainDefPostParse(def, caps, VIR_DOMAIN_DEF_PARSE_ABI_UPDATE,
|
||||
xmlopt) < 0)
|
||||
xmlopt, NULL) < 0)
|
||||
goto cleanup;
|
||||
|
||||
return def;
|
||||
|
Loading…
x
Reference in New Issue
Block a user