On Wed, Mar 16, 2011 at 03:48:52PM -0600, Eric Blake wrote: > https://bugzilla.redhat.com/show_bug.cgi?id=684655 points out > a regression introduced in commit 2215050edd - non-root users > can't connect to qemu:///session because libvirtd dies when > it can't use pciaccess initialization. > > * src/node_device/node_device_udev.c (udevDeviceMonitorStartup): > Don't abort udev driver (and libvirtd overall) if non-root user > can't use pciaccess. > --- > src/node_device/node_device_udev.c | 19 ++++++++++++------- > 1 files changed, 12 insertions(+), 7 deletions(-) > > diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_device_udev.c > index be6a371..44df16e 100644 > --- a/src/node_device/node_device_udev.c > +++ b/src/node_device/node_device_udev.c > @@ -1,7 +1,7 @@ > /* > * node_device_udev.c: node device enumeration - libudev implementation > * > - * Copyright (C) 2009-2010 Red Hat, Inc. > + * Copyright (C) 2009-2011 Red Hat, Inc. > * > * This library is free software; you can redistribute it and/or > * modify it under the terms of the GNU Lesser General Public > @@ -1589,7 +1589,7 @@ out: > return ret; > } > > -static int udevDeviceMonitorStartup(int privileged ATTRIBUTE_UNUSED) > +static int udevDeviceMonitorStartup(int privileged) > { > udevPrivate *priv = NULL; > struct udev *udev = NULL; > @@ -1597,11 +1597,16 @@ static int udevDeviceMonitorStartup(int privileged ATTRIBUTE_UNUSED) > int pciret; > > if ((pciret = pci_system_init()) != 0) { > - char ebuf[256]; > - VIR_ERROR(_("Failed to initialize libpciaccess: %s"), > - virStrerror(pciret, ebuf, sizeof ebuf)); > - ret = -1; > - goto out; > + /* Ignore failure as non-root; udev is not as helpful in that > + * situation, but a non-privileged user won't benefit much > + * from udev in the first place. */ > + if (privileged || errno != EACCES) { > + char ebuf[256]; > + VIR_ERROR(_("Failed to initialize libpciaccess: %s"), > + virStrerror(pciret, ebuf, sizeof ebuf)); > + ret = -1; > + goto out; > + } > } > > if (VIR_ALLOC(priv) < 0) { ACK, though it works fine without this on Fedora 14 hosts. So I guess its only older libpciaccess that has trouble as non-root 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 :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list