From 79ca7e4e5763795b041e95738c73d4e64bf1024b Mon Sep 17 00:00:00 2001 From: "Gerd v. Egidy" Date: Fri, 27 Jul 2012 17:01:04 +0200 Subject: [PATCH] libvirt-guests: systemd host shutdown does not work MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I originally postet this into the Fedora bugzilla https://bugzilla.redhat.com/show_bug.cgi?id=843836 Currently gracefully shutting down guest vms on host shutdown does not work on Fedora 17, the guests are killed hard on system shutdown. The reason is systemd considers libvirt-guests.service to be stopped when the system is running: $ systemctl status libvirt-guests.service libvirt-guests.service - Suspend Active Libvirt Guests Loaded: loaded (/usr/lib/systemd/system/libvirt-guests.service; enabled) Active: deactivating (stop) since Fri, 27 Jul 2012 15:47:31 +0200; 2min 48s ago Process: 1085 ExecStart=/etc/init.d/libvirt-guests start (code=exited, status=0/SUCCESS) Control: 1150 (libvirt-guests) CGroup: name=systemd:/system/libvirt-guests.service └ control ├ 1150 /bin/sh /etc/init.d/libvirt-guests stop └ 2257 sleep 1 libvirt-guests.service is defined as type "simple" in systemd (the default). That means systemd will shut down the service when the start executable is terminated after starting is done. Systemd will not call stop again on system shutdown because it thinks it is already stopped. The solution is to define it as type "oneshot" and set the flag "RemainAfterExit". Then systemd will consider the service as active after startup and will call the stop function on host shutdown. --- tools/libvirt-guests.service.in | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/libvirt-guests.service.in b/tools/libvirt-guests.service.in index bc63e917a6..db28f3ff6a 100644 --- a/tools/libvirt-guests.service.in +++ b/tools/libvirt-guests.service.in @@ -8,6 +8,8 @@ EnvironmentFile=-/etc/sysconfig/libvirt-guests # out the code ExecStart=/etc/init.d/libvirt-guests start ExecStop=/etc/init.d/libvirt-guests stop +Type=oneshot +RemainAfterExit=yes [Install] WantedBy=multi-user.target