From f98761b13ec88aa506987f3d112a9f41f14d6dfb Mon Sep 17 00:00:00 2001
From: Bihong Yu <yubihong@huawei.com>
Date: Tue, 18 Jan 2022 10:08:03 +0100
Subject: [PATCH 03/22] qemuDomainPinIOThread: Update live definition after
 process pinning
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Update live definition after process pinning, Otherwise we'll
keep using the new pinning value even if it can't be applied to
the thread.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2040555

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
Signed-off-by: Bihong Yu <yubihong@huawei.com>
---
 src/qemu/qemu_driver.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 8b19be46f1..32b3ef3cf1 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -5719,10 +5719,6 @@ qemuDomainPinIOThread(virDomainPtr dom,
         if (!(cpumask = virBitmapNewData(cpumap, maplen)))
             goto endjob;
 
-        virBitmapFree(iothrid->cpumask);
-        iothrid->cpumask = cpumask;
-        iothrid->autofill = false;
-
         /* Configure the corresponding cpuset cgroup before set affinity. */
         if (virCgroupHasController(priv->cgroup,
                                    VIR_CGROUP_CONTROLLER_CPUSET)) {
@@ -5740,6 +5736,10 @@ qemuDomainPinIOThread(virDomainPtr dom,
         if (virProcessSetAffinity(iothrid->thread_id, pcpumap) < 0)
             goto endjob;
 
+        virBitmapFree(iothrid->cpumask);
+        iothrid->cpumask = cpumask;
+        iothrid->autofill = false;
+
         if (virDomainObjSave(vm, driver->xmlopt, cfg->stateDir) < 0)
             goto endjob;
 
-- 
2.33.0

