]> www.infradead.org Git - users/dwmw2/qemu.git/commitdiff
tests/functional/test_x86_64_hotplug_cpu: Fix race condition during unplug
authorThomas Huth <thuth@redhat.com>
Tue, 7 Jan 2025 11:52:45 +0000 (12:52 +0100)
committerThomas Huth <thuth@redhat.com>
Tue, 7 Jan 2025 14:02:46 +0000 (15:02 +0100)
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>
tests/functional/test_x86_64_hotplug_cpu.py

index b1d5156c72caf760466595abdd1b03b0c4016f72..7b9200ac2e8de3af34ef90b62c038e9b5619c8c2 100755 (executable)
@@ -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()