On Thu, Oct 27, 2016 at 04:02:33PM +0200, Michal Sekletar wrote: > On Thu, Oct 27, 2016 at 3:45 PM, Daniel P. Berrange <berrange@xxxxxxxxxx> wrote: > > > We can not do any sychronous wait against udev doing work - that will > > add an unacceptable delay in the VM startup process - it is already > > too long and we don't want to design a system that will make it even > > slower. > > Note that if implemented it would be very targeted wait for one > specific event. It *won't* be an equivalent of udevadm settle. In > "uncontented" case udev's response should be very quick. Otherwise, > something (e.g. lv resize) is still setting up a block device because > change events are still being processed for it, and if that is the > case, then just spawning qemu and hoping for the best doesn't seem > right to me (disregarding SELinux and permission issues). We should never be spawning a VM using a disk at the same time as the underlying device is appearing - other unrelated devices may be appearing/disappearing at this time, but not the one the VM is using. The only reason we're hitting this problem with udev is not because the storage is changing, it is because some other process (eg a background monitoring app) has closed the device triggerring the udev to arbitrarily change the devices. If we can just stop udev resetting device permissions on FD close we would not have to deal with any of this problem. > Is libvirt really not waiting for udev at all? We only wait for udev in cases where we are dealing with storage setup. eg when we login to an iSCSI target, or when we activate a LVM volume group, etc. None of these things are in the VM startup code path. Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://entangle-photo.org -o- http://search.cpan.org/~danberr/ :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list