/**
* qemuBuildMemoryBackendStr:
- * @mem: memory definition object
- * @autoNodeset: fallback nodeset in case of automatic numa placement
- * @def: domain definition object
- * @qemuCaps: qemu capabilities object
+ * @backendProps: [out] constructed object
+ * @backendType: [out] type of the backennd used
* @cfg: qemu driver config object
- * @aliasPrefix: prefix string of the alias (to allow for multiple frontents)
- * @id: index of the device (to construct the alias)
- * @backendStr: returns the object string
+ * @qemuCaps: qemu capabilities object
+ * @def: domain definition object
+ * @mem: memory definition object
+ * @autoNodeset: fallback nodeset in case of automatic NUMA placement
+ * @force: forcibly use one of the backends
+ *
+ * Creates a configuration object that represents memory backend of given guest
+ * NUMA node (domain @def and @mem). Use @autoNodeset to fine tune the
+ * placement of the memory on the host NUMA nodes.
+ *
+ * By default, if no memory-backend-* object is necessary to fulfil the guest
+ * configuration value of 1 is returned. This behaviour can be suppressed by
+ * setting @force to true in which case 0 would be returned.
*
- * Formats the configuration string for the memory device backend according
- * to the configuration. @pagesize and @hostNodes can be used to override the
- * default source configuration, both are optional.
+ * Then, if one of the two memory-backend-* should be used, the @qemuCaps is
+ * consulted to check if qemu does support it.
*
- * Returns 0 on success, 1 if only the implicit memory-device-ram with no
- * other configuration was used (to detect legacy configurations). Returns
- * -1 in case of an error.
+ * Returns: 0 on success,
+ * 1 on success and if there's no need to use memory-backend-*
+ * -1 on error.
*/
int
-qemuBuildMemoryBackendStr(virDomainMemoryDefPtr mem,
- virBitmapPtr autoNodeset,
- virDomainDefPtr def,
- virQEMUCapsPtr qemuCaps,
- virQEMUDriverConfigPtr cfg,
+qemuBuildMemoryBackendStr(virJSONValuePtr *backendProps,
const char **backendType,
- virJSONValuePtr *backendProps,
+ virQEMUDriverConfigPtr cfg,
+ virQEMUCapsPtr qemuCaps,
+ virDomainDefPtr def,
+ virDomainMemoryDefPtr mem,
+ virBitmapPtr autoNodeset,
bool force)
{
virDomainHugePagePtr master_hugepage = NULL;
if (virAsprintf(&alias, "ram-node%zu", cell) < 0)
goto cleanup;
- if ((rc = qemuBuildMemoryBackendStr(&mem, auto_nodeset, def, qemuCaps,
- cfg, &backendType, &props, false)) < 0)
+ if ((rc = qemuBuildMemoryBackendStr(&props, &backendType, cfg, qemuCaps,
+ def, &mem, auto_nodeset, false)) < 0)
goto cleanup;
if (!(*backendStr = virQEMUBuildObjectCommandlineFromJSON(backendType,
if (virAsprintf(&alias, "mem%s", mem->info.alias) < 0)
goto cleanup;
- if (qemuBuildMemoryBackendStr(mem, auto_nodeset,
- def, qemuCaps, cfg,
- &backendType, &props, true) < 0)
+ if (qemuBuildMemoryBackendStr(&props, &backendType, cfg, qemuCaps,
+ def, mem, auto_nodeset, true) < 0)
goto cleanup;
ret = virQEMUBuildObjectCommandlineFromJSON(backendType, alias, props);
virQEMUCapsPtr qemuCaps,
int *nusbcontroller);
-int qemuBuildMemoryBackendStr(virDomainMemoryDefPtr mem,
- virBitmapPtr autoNodeset,
- virDomainDefPtr def,
- virQEMUCapsPtr qemuCaps,
- virQEMUDriverConfigPtr cfg,
+int qemuBuildMemoryBackendStr(virJSONValuePtr *backendProps,
const char **backendType,
- virJSONValuePtr *backendProps,
+ virQEMUDriverConfigPtr cfg,
+ virQEMUCapsPtr qemuCaps,
+ virDomainDefPtr def,
+ virDomainMemoryDefPtr mem,
+ virBitmapPtr autoNodeset,
bool force);
char *qemuBuildMemoryDeviceStr(virDomainMemoryDefPtr mem);