Bug 2040555
| Summary: | Pinning iothread to not allowed cpuset fails but vm xml got updated unexpectedly | ||
|---|---|---|---|
| Product: | Red Hat Enterprise Linux 9 | Reporter: | Fangge Jin <fjin> |
| Component: | libvirt | Assignee: | Peter Krempa <pkrempa> |
| libvirt sub component: | General | QA Contact: | Luyao Huang <lhuang> |
| Status: | CLOSED ERRATA | Docs Contact: | |
| Severity: | medium | ||
| Priority: | unspecified | CC: | dzheng, jdenemar, lhuang, pkrempa, virt-maint, xuzhang, yalzhang |
| Version: | 9.0 | Keywords: | Triaged |
| Target Milestone: | rc | Flags: | pm-rhel:
mirror+
|
| Target Release: | --- | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | libvirt-8.1.0-1.el9 | Doc Type: | If docs needed, set a value |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2022-11-15 10:03:03 UTC | Type: | Bug |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | 8.1.0 |
| Embargoed: | |||
The code indeed updates the internal definition before setting the pinning on the process. Fixed upstream:
commit ce20fe5c2abd8b5bf2064452a7fc9ca54eecaf1f
Author: Peter Krempa <pkrempa>
Date: Tue Jan 18 10:08:03 2022 +0100
qemuDomainPinIOThread: 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>
Reviewed-by: Ján Tomko <jtomko>
Reviewed-by: Pavel Hrdina <phrdina>
v8.0.0-64-gce20fe5c2a
Verify this bug with libvirt-8.2.0-1.el9.x86_64:
1. Start a vm
# virsh list --all
Id Name State
----------------------
3 vm1 running
2. Set allowed cpuset on host:
# echo "0-3" > /sys/fs/cgroup/machine.slice/cpuset.cpus
3. Add iothread and set iothreadpin
# virsh iothreadadd vm1 3
# virsh iothreadpin vm1 3 4-7
error: cannot set CPU affinity on process 171179: Invalid argument
4. Check vm xml
# virsh dumpxml vm1|grep iothread
<iothreads>1</iothreads>
<iothreadids>
<iothread id='3'/>
</iothreadids>
5. Save and restore vm
# virsh managedsave vm1
Domain 'vm1' state saved by libvirt
# virsh start vm1
Domain 'vm1' started
6. check vm xml
# virsh dumpxml vm1 |grep iothread
<iothreads>1</iothreads>
<iothreadids>
<iothread id='3'/>
</iothreadids>
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory (Low: libvirt security, bug fix, and enhancement update), and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHSA-2022:8003 |
Description of problem: Pinning iothread to not allowed cpuset returns success unexpectedly Version-Release number of selected component: libvirt-7.10.0-1.el9.x86_64 or libvirt-8.0.0-0rc1.1.el9.x86_64 kernel-5.14.0-34.el9.x86_64 How reproducible: 100% Steps to Reproduce: 1. Start a vm 2. Set allowed cpuset on host: # echo "0,2,3,4,6,8" > /sys/fs/cgroup/machine.slice/cpuset.cpus 3. Add iothread and set iothreadpin # virsh iothreadadd vm1 3 # virsh iothreadpin vm1 3 9-19 error: cannot set CPU affinity on process 13904: Invalid argument 4. Check vm xml # virsh dumpxml vm1|grep iothread <iothreads>1</iothreads> <iothreadids> <iothread id='3'/> </iothreadids> <iothreadpin iothread='3' cpuset='9-19'/> 5. Save and restore vm # virsh managedsave vm1 Domain 'vm1' state saved by libvirt 6. # virsh start vm1 error: Failed to start domain 'vm1' error: cannot set CPU affinity on process 15136: Invalid argument Actual results: Vm xml is updated when iothreadpin fails, and vm can't be restored after saving Expected results: Vm xml should not be updated when iothreadpin fails