On 07/12/2020 17.34, Thomas Huth wrote: > On 07/12/2020 17.30, Cornelia Huck wrote: >> On Mon, 7 Dec 2020 15:28:47 +0100 >> Thomas Huth <th...@redhat.com> wrote: >> >>> On 04/12/2020 13.14, Cornelia Huck wrote: >>>> Hotplug a virtio-net-ccw device, and then hotunplug it again. >>>> >>>> Signed-off-by: Cornelia Huck <coh...@redhat.com> >>>> --- > [...] >>>> + exec_command_and_wait_for_pattern(self, 'ls >>>> /sys/bus/ccw/devices/', >>>> + '0.0.4711') >>>> + # and detach it again >>>> + exec_command_and_wait_for_pattern(self, 'dmesg -c', ' ') >>> >>> If adapt my above change, you could also get rid of this dmesg -c here >>> (since it's done in the while loop already) >> >> I don't think so (there are two CRWs posted, and the loop might have >> caught the first one only.) > > Oh, you're right. So let's better be safe than sorry and keep this dmesg -c.
Ok, as we had to discover during some testing, it's a bad idea to only wait for ' ' after the 'dmesg -c' since it matches too early, so that the device gets added while the dmesg command is still running. The following code is working for me instead: # add another device exec_command_and_wait_for_pattern(self, 'dmesg -c > /dev/null; echo dm-clear\ 1', 'dm-clear 1') self.vm.command('device_add', driver='virtio-net-ccw', devno='fe.0.4711', id='net_4711') exec_command_and_wait_for_pattern(self, 'while ! (dmesg -c | grep CRW) ; do sleep 1 ; done', 'CRW reports') exec_command_and_wait_for_pattern(self, 'ls /sys/bus/ccw/devices/', '0.0.4711') # and detach it again exec_command_and_wait_for_pattern(self, 'dmesg -c > /dev/null; echo dm-clear\ 2', 'dm-clear 2') self.vm.command('device_del', id='net_4711') self.vm.event_wait(name='DEVICE_DELETED', match={'data': {'device': 'net_4711'}}) exec_command_and_wait_for_pattern(self, 'while ! (dmesg -c | grep CRW) ; do sleep 1 ; done', 'CRW reports') exec_command_and_wait_for_pattern(self, 'ls /sys/bus/ccw/devices/0.0.4711', 'No such file or directory') HTH, Thomas