• M
    qemu: Handle EEXIST gracefully in qemuDomainCreateDevice · 3aae99fe
    Michal Privoznik 提交于
    https://bugzilla.redhat.com/show_bug.cgi?id=1406837
    
    Imagine you have a domain configured in such way that you are
    assigning two PCI devices that fall into the same IOMMU group.
    With mount namespace enabled what happens is that for the first
    PCI device corresponding /dev/vfio/X entry is created and when
    the code tries to do the same for the second mknod() fails as
    /dev/vfio/X already exists:
    
    2016-12-21 14:40:45.648+0000: 24681: error :
    qemuProcessReportLogError:1792 : internal error: Process exited
    prior to exec: libvirt: QEMU Driver error : Failed to make device
    /var/run/libvirt/qemu/windoze.dev//vfio/22: File exists
    
    Worse, by default there are some devices that are created in the
    namespace regardless of domain configuration (e.g. /dev/null,
    /dev/urandom, etc.). If one of them is set as backend for some
    guest device (e.g. rng, chardev, etc.) it's the same story as
    described above.
    
    Weirdly, in attach code this is already handled.
    Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
    3aae99fe
qemu_domain.c 240.5 KB