On 9/24/26 14:57, Denis V. Lunev wrote: > This email originated from an IP that might not be authorized by the domain > it was sent from. > Do not click links or open attachments unless it is an email you expected to > receive. > We lost several production VMs during an in-place QEMU update. Each had > its guest memory bound to a host node with host-nodes. The new QEMU > re-ran mbind() on the inherited RAM, got EINVAL and exited, taking the > guest with it. The likely trigger is the host's memory manager moving > the emulator cgroup's cpuset.mems to other nodes while the VMs ran; > doing exactly that reproduces the failure. > > Patch 1 stops the new QEMU from rebinding and preallocating memory it > inherited over CPR. Patch 2 adds a qtest that reproduces the failure > without root: the exec'd QEMU asks for a host node mbind() rejects, > which is what a narrowed cpuset looks like to it. > > Tested with migration-test on x86_64: mode/exec/numa fails without > patch 1 and passes with it, the rest of the suite passes. A standalone > reproducer that moves a real cgroup v2 cpuset.mems between nodes while > the VM runs shows the same before and after on a four-node host. > > Signed-off-by: Denis V. Lunev <[email protected]> > Cc: David Hildenbrand <[email protected]> > Cc: Igor Mammedov <[email protected]> > Cc: "Maciej S. Szmigiero" <[email protected]> > Cc: Peter Xu <[email protected]> > Cc: Fabiano Rosas <[email protected]> > Cc: Mark Kanda <[email protected]> > Cc: Ben Chaney <[email protected]> > Cc: Steve Sistare <[email protected]> > Cc: Andrey Drobyshev <[email protected]> > > Denis V. Lunev (2): > hostmem: fix cpr-exec of VMs with bound guest memory > tests/qtest/migration: add a cpr-exec test for bound guest memory > > backends/hostmem.c | 5 ++++ > tests/qtest/migration/cpr-tests.c | 38 ++++++++++++++++++++++++++++--- > 2 files changed, 40 insertions(+), 3 deletions(-) > > > base-commit: 942229961efea74b153c44c59188eb08375f10f1 ping
