On 12/05/2012 11:43 AM, Eric Blake wrote:
https://bugzilla.redhat.com/show_bug.cgi?id=830201

The initscript and upstart services depend on dbus starting
before libvirtd.  When we first wrote the systemd script, we
tried to do the same, but we depended on dbus.target (which
does not exist) in comparison to network.target (which does
exist), so we removed that in commit 4c7973e.  But we still
need dbus up and running first, especially now that we want
to support shutdown inhibition via dbus (whereas we originally
needed dbus only for firewall control).

http://www.freedesktop.org/software/systemd/man/systemd.target.html
explains how a target (such as network.target) is just a collection
of common services bundled together, and why we want network.target
but dbus.service.

* daemon/libvirtd.service.in (Unit): Depend on dbus starting
first.
---

v2: send the correct patch

 daemon/libvirtd.service.in |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/daemon/libvirtd.service.in b/daemon/libvirtd.service.in
index b7afadf..98dd5a0 100644
--- a/daemon/libvirtd.service.in
+++ b/daemon/libvirtd.service.in
@@ -7,6 +7,7 @@
 Description=Virtualization daemon
 Before=libvirt-guests.service
 After=network.target
+After=dbus.service

 [Service]
 EnvironmentFile=-/etc/sysconfig/libvirtd

      According to the following link
      http://www.freedesktop.org/software/systemd/man/systemd.unit.html
      "It is a common pattern to include a unit name in both the After= and Requires= option in which case the unit listed will be started before the unit that is configured with these options. "
      But it is okay to be written without "Requires" option.
  
      ACK.

      Guannan