On Tue, Jan 07, 2025 at 12:52:45PM +0100, Thomas Huth wrote: > 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. > > Reported-by: Stefan Hajnoczi <stefa...@gmail.com> > Signed-off-by: Thomas Huth <th...@redhat.com> > --- > tests/functional/test_x86_64_hotplug_cpu.py | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/tests/functional/test_x86_64_hotplug_cpu.py > b/tests/functional/test_x86_64_hotplug_cpu.py > index b1d5156c72..7b9200ac2e 100755 > --- a/tests/functional/test_x86_64_hotplug_cpu.py > +++ b/tests/functional/test_x86_64_hotplug_cpu.py > @@ -59,11 +59,13 @@ def test_hotplug(self): > 'cd /sys/devices/system/cpu/cpu1', > 'cpu1#') > > + exec_command_and_wait_for_pattern(self, 'cd ..', prompt)
Is this actually needed ? Are we keeping the CPU from being unplugged by being in that dir ? If so, why isn't it also needed in the while loop below ? > 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() > -- > 2.47.1 > With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|