>On Sat, Jul 22, 2017 at 05:45:59 -0400, Yi Wang wrote:
>> This patch fix this condition:
>> -vm has the "auto" placement in vcpu
>> -hot-plug memory with source node "1-3" through attach-device command
>> -migrate the vm to a host with only 2 numa node
>> And the migration will fail with error:
>> "error: unsupported configuration: NUMA node 2 is unavailable"
>>
>> Signed-off-by: Yi Wang <wang yi59 zte com cn>
>> Signed-off-by: Xi Xu <xu xi8 zte com cn>
>> ---
>> src/qemu/qemu_process.c | 10 ++++++++++
>> 1 file changed, 10 insertions(+)
>>
>> diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
>> index 7b708be..dcc564c 100644
>> --- a/src/qemu/qemu_process.c
>> +++ b/src/qemu/qemu_process.c
>> @@ -5259,6 +5259,16 @@ qemuProcessPrepareDomain(virConnectPtr conn,
>> goto cleanup;
>> }
>>
>> + VIR_DEBUG("Updating memory source nodes");
>> + for (i = 0; i < vm->def->nmems; i++) {
>> + virDomainMemoryDefPtr mem = vm->def->mems[i];
>> + if (priv->autoNodeset && mem && mem->sourceNodes) {
>> + virBitmapFree(mem->sourceNodes);
>> + if (!(mem->sourceNodes = virBitmapNewCopy(priv->autoNodeset)))
>> + goto cleanup;
>
>This is not correct. This code will be executed even during normal
>startup and it would remove any manual pinning the user set-up.
What you said is right, this is indeed a problem that my patch ignored.
>
>I think the problem might be that the XML retains the nodesets of
>automatically placed memory modules while formatting the migratable XML.
The problem is that the source nodemask specified in the "virsh attach-device"
XML, which doesn't exist in the destination host. For example:
<memory model='dimm'>
<target>
<size unit='MiB'>1024</size>
<node>0</node>
</target>
<source>
<nodemask>1-3</nodemask>
</source>
</memory>
The source of the problem is that we must set source nodemask when hot-plug
memory dimm when the VM has auto placement, or it failed:
# virsh attach-device centos mem_hp.xml
error: Failed to attach device from mem_hp.xml
error: internal error: Advice from numad is needed in case of automatic numa placement
And after we set source nodemask, it might fail to migrate.
So, a better way to work around this problem is add a "auto" supported to <source>?
Any other suggestion?
---
Best wishes
Yi Wang