We're hitting a problem in libvirt where 'udevadm settle' will get stuck in a loop until it eventually times out. Eventually we realized this happens when we have any LXC containers active with veth devices in a separate network namespace.
It is quite easy to reproduce the hang. In one terminal session start a new network namespace: # unshare --net /bin/sh sh-4.2# echo $$ 30718 Now in another terminal create a veth pair, and move one of the pair into the network namespace: # ip link add name FOO type veth peer name BAR # ip link set FOO netns 30718 Now udevadm will hang: # udevadm settle until it times out after 2 minutes. Looking at the udevadm code I discovered that udev_queue_get_queue_is_empty will never return true if there is any veth device that has been moved into a separate network namespace. Adding some debugging I can see that the variable 'seqnum_udev' is forever less than 'seqnum_kernel' in this scenario. Any ideas on how to solve this problem with udevadm settle ? Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :| _______________________________________________ systemd-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/systemd-devel
