mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
qemu_process: Deduplicate code in qemuProcessNeedHugepagesPath()
The aim of qemuProcessNeedHugepagesPath() is to return whether guest needs private path inside HugeTLBFS mounts (deducted from domain definition @def) or whether the memory device that user is hotplugging in needs the private path (deducted from the @mem argument). The actual creation of the path is done in the only caller qemuProcessBuildDestroyMemoryPaths(). The rule for the first case (@def) and the second case (@mem) is the same (domain has a DIMM device that has HP requested) and is written twice. Move the logic into a function to deduplicate the code. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Peter Krempa <pkrempa@redhat.com>
This commit is contained in:
parent
0ccc73ef52
commit
4d779874ef
@ -3872,6 +3872,26 @@ qemuProcessReconnectCheckMemAliasOrderMismatch(virDomainObj *vm)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static bool
|
||||||
|
qemuProcessDomainMemoryDefNeedHugepagesPath(const virDomainMemoryDef *mem,
|
||||||
|
const long system_pagesize)
|
||||||
|
{
|
||||||
|
switch (mem->model) {
|
||||||
|
case VIR_DOMAIN_MEMORY_MODEL_DIMM:
|
||||||
|
return mem->pagesize && mem->pagesize != system_pagesize;
|
||||||
|
|
||||||
|
case VIR_DOMAIN_MEMORY_MODEL_NONE:
|
||||||
|
case VIR_DOMAIN_MEMORY_MODEL_NVDIMM:
|
||||||
|
case VIR_DOMAIN_MEMORY_MODEL_VIRTIO_PMEM:
|
||||||
|
case VIR_DOMAIN_MEMORY_MODEL_LAST:
|
||||||
|
/* None of these can be backed by hugepages. */
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
qemuProcessNeedHugepagesPath(virDomainDef *def,
|
qemuProcessNeedHugepagesPath(virDomainDef *def,
|
||||||
virDomainMemoryDef *mem)
|
virDomainMemoryDef *mem)
|
||||||
@ -3888,16 +3908,12 @@ qemuProcessNeedHugepagesPath(virDomainDef *def,
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < def->nmems; i++) {
|
for (i = 0; i < def->nmems; i++) {
|
||||||
if (def->mems[i]->model == VIR_DOMAIN_MEMORY_MODEL_DIMM &&
|
if (qemuProcessDomainMemoryDefNeedHugepagesPath(def->mems[i], system_pagesize))
|
||||||
def->mems[i]->pagesize &&
|
|
||||||
def->mems[i]->pagesize != system_pagesize)
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mem &&
|
if (mem &&
|
||||||
mem->model == VIR_DOMAIN_MEMORY_MODEL_DIMM &&
|
qemuProcessDomainMemoryDefNeedHugepagesPath(mem, system_pagesize))
|
||||||
mem->pagesize &&
|
|
||||||
mem->pagesize != system_pagesize)
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
Loading…
Reference in New Issue
Block a user