mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 05:35:25 +00:00
numa_conf: Deny other memory modes than 'restrictive' if a memnode is 'restrictive'
We already do check that if there's <memory mode='restrictive'/> then all <memnode/> have to be of 'restrictive' mode too. But what we are missing the reverse: if there is <memnode/> with 'restrictive' mode, then the <memory/> has to be of the same mode too. Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2208946 Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
This commit is contained in:
parent
f6ba9fc12a
commit
17c8a173b6
@ -1075,12 +1075,20 @@ virDomainNumaDefValidate(const virDomainNuma *def)
|
||||
const virDomainNumaNode *node = &def->mem_nodes[i];
|
||||
g_autoptr(virBitmap) levelsSeen = virBitmapNew(0);
|
||||
|
||||
if (virDomainNumatuneNodeSpecified(def, i) &&
|
||||
def->memory.mode == VIR_DOMAIN_NUMATUNE_MEM_RESTRICTIVE &&
|
||||
node->mode != VIR_DOMAIN_NUMATUNE_MEM_RESTRICTIVE) {
|
||||
virReportError(VIR_ERR_XML_ERROR, "%s",
|
||||
_("'restrictive' mode is required in memnode element when mode is 'restrictive' in memory element"));
|
||||
return -1;
|
||||
if (virDomainNumatuneNodeSpecified(def, i)) {
|
||||
if (def->memory.mode == VIR_DOMAIN_NUMATUNE_MEM_RESTRICTIVE &&
|
||||
node->mode != VIR_DOMAIN_NUMATUNE_MEM_RESTRICTIVE) {
|
||||
virReportError(VIR_ERR_XML_ERROR, "%s",
|
||||
_("'restrictive' mode is required in memnode element when mode is 'restrictive' in memory element"));
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (node->mode == VIR_DOMAIN_NUMATUNE_MEM_RESTRICTIVE &&
|
||||
def->memory.mode != VIR_DOMAIN_NUMATUNE_MEM_RESTRICTIVE) {
|
||||
virReportError(VIR_ERR_XML_ERROR, "%s",
|
||||
_("'restrictive' mode is required in memory element when mode is 'restrictive' in memnode element"));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
for (j = 0; j < node->ncaches; j++) {
|
||||
|
@ -0,0 +1 @@
|
||||
XML error: 'restrictive' mode is required in memory element when mode is 'restrictive' in memnode element
|
@ -0,0 +1,41 @@
|
||||
<domain type='qemu'>
|
||||
<name>QEMUGuest</name>
|
||||
<uuid>9f4b6512-e73a-4a25-93e8-5307802821ce</uuid>
|
||||
<memory unit='KiB'>24682468</memory>
|
||||
<currentMemory unit='KiB'>24682468</currentMemory>
|
||||
<vcpu placement='static'>32</vcpu>
|
||||
<numatune>
|
||||
<memory mode='interleave' nodeset='0-3'/>
|
||||
<memnode cellid='0' mode='strict' nodeset='3'/>
|
||||
<memnode cellid='2' mode='restrictive' nodeset='1-2'/>
|
||||
</numatune>
|
||||
<os>
|
||||
<type arch='x86_64' machine='pc'>hvm</type>
|
||||
<boot dev='hd'/>
|
||||
</os>
|
||||
<cpu mode='custom' match='exact' check='none'>
|
||||
<model fallback='forbid'>qemu64</model>
|
||||
<numa>
|
||||
<cell id='0' cpus='0' memory='20002' unit='KiB'/>
|
||||
<cell id='1' cpus='1-27,29' memory='660066' unit='KiB'/>
|
||||
<cell id='2' cpus='28,30-31' memory='24002400' unit='KiB'/>
|
||||
</numa>
|
||||
</cpu>
|
||||
<clock offset='utc'/>
|
||||
<on_poweroff>destroy</on_poweroff>
|
||||
<on_reboot>restart</on_reboot>
|
||||
<on_crash>destroy</on_crash>
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||
<controller type='usb' index='0' model='piix3-uhci'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
|
||||
</controller>
|
||||
<controller type='pci' index='0' model='pci-root'/>
|
||||
<input type='mouse' bus='ps2'/>
|
||||
<input type='keyboard' bus='ps2'/>
|
||||
<audio id='1' type='none'/>
|
||||
<memballoon model='virtio'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
|
||||
</memballoon>
|
||||
</devices>
|
||||
</domain>
|
@ -1868,6 +1868,7 @@ mymain(void)
|
||||
DO_TEST_CAPS_LATEST("numatune-memnode");
|
||||
DO_TEST_PARSE_ERROR_NOCAPS("numatune-memnode-invalid-mode");
|
||||
DO_TEST_CAPS_LATEST("numatune-memnode-restrictive-mode");
|
||||
DO_TEST_CAPS_LATEST_PARSE_ERROR("numatune-memnode-restrictive-mode-err-mixed");
|
||||
DO_TEST_CAPS_LATEST("numatune-system-memory");
|
||||
|
||||
DO_TEST_NOCAPS("numatune-memnode-no-memory");
|
||||
|
Loading…
Reference in New Issue
Block a user