tests/functional/test_x86_64_hotplug_cpu: Fix race condition during unplug

When unplugging the CPU, the test tries to check for a successful
unplug by changing to the /sys/devices/system/cpu/cpu1 directory
to see whether that fails. However, the "cd" could be faster than
the unplug operation in the kernel, so there is a race condition
and the test sometimes fails here.
Fix it by trying to change the directory in a loop until the the
CPU has really been unplugged.
While we're at it, also add a "cd .." before unplugging to make
the console output a little bit less confusing (since the path
is echoed in the shell prompt).

Reported-by: Stefan Hajnoczi <stefanha@gmail.com>
Message-ID: <20250107115245.52755-1-thuth@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
Thomas Huth 2025-01-07 12:52:45 +01:00
parent 5cd37fe6dd
commit f69705f300

View file

@ -59,11 +59,13 @@ class HotPlugCPU(LinuxKernelTest):
'cd /sys/devices/system/cpu/cpu1',
'cpu1#')
exec_command_and_wait_for_pattern(self, 'cd ..', prompt)
self.vm.cmd('device_del', id='c1')
exec_command_and_wait_for_pattern(self,
'cd /sys/devices/system/cpu/cpu1',
'No such file or directory')
'while cd /sys/devices/system/cpu/cpu1 ;'
' do sleep 0.2 ; done',
'No such file or directory')
if __name__ == '__main__':
LinuxKernelTest.main()