From: Rusty Bird Date: Thu, 7 Jul 2016 14:09:32 +0000 (+0000) Subject: tools/hotplug: Add native systemd xendriverdomain.service X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~814 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=4f7e0d54a523794197129cebdbc55f4f079e60b2;p=xen.git tools/hotplug: Add native systemd xendriverdomain.service A dedicated Xen driver domain init service starts "xl devd" in domU. But currently, it is only supplied in the form of a SysV init script, which systemd users run through a backward compatiblity wrapper automatically generated by systemd-sysv-generator. This patch adds a (naturally more lightweight) native systemd unit to be used instead. The xendriverdomain service is only relevant to domU, but should not run in dom0. Therefore, the systemd unit uses "ConditionVirtualization=xen", which evaluates to true in domU and (since systemd version 214, released on 2014-06-11) to false in dom0. Users or distributors who need to be compatible with even older systemd versions, but still want to prevent "xl devd" startup in dom0, could add the following line in [Service]: ExecStartPre=/bin/sh -c "! grep -q control_d /proc/xen/capabilities" (Please rerun autogen.sh after applying this patch) Signed-off-by: Rusty Bird Cc: Ian Jackson Cc: Wei Liu Acked-by: Wei Liu [ wei: rerun autogen.sh ] --- diff --git a/tools/configure b/tools/configure index 4c92fa266f..5b5dccef38 100755 --- a/tools/configure +++ b/tools/configure @@ -9670,7 +9670,7 @@ fi if test "x$systemd" = "xy"; then : - ac_config_files="$ac_config_files hotplug/Linux/systemd/proc-xen.mount hotplug/Linux/systemd/var-lib-xenstored.mount hotplug/Linux/systemd/xen-init-dom0.service hotplug/Linux/systemd/xen-qemu-dom0-disk-backend.service hotplug/Linux/systemd/xen-watchdog.service hotplug/Linux/systemd/xenconsoled.service hotplug/Linux/systemd/xendomains.service hotplug/Linux/systemd/xenstored.service hotplug/Linux/systemd/xenstored.socket hotplug/Linux/systemd/xenstored_ro.socket" + ac_config_files="$ac_config_files hotplug/Linux/systemd/proc-xen.mount hotplug/Linux/systemd/var-lib-xenstored.mount hotplug/Linux/systemd/xen-init-dom0.service hotplug/Linux/systemd/xen-qemu-dom0-disk-backend.service hotplug/Linux/systemd/xen-watchdog.service hotplug/Linux/systemd/xenconsoled.service hotplug/Linux/systemd/xendomains.service hotplug/Linux/systemd/xendriverdomain.service hotplug/Linux/systemd/xenstored.service hotplug/Linux/systemd/xenstored.socket hotplug/Linux/systemd/xenstored_ro.socket" fi @@ -10392,6 +10392,7 @@ do "hotplug/Linux/systemd/xen-watchdog.service") CONFIG_FILES="$CONFIG_FILES hotplug/Linux/systemd/xen-watchdog.service" ;; "hotplug/Linux/systemd/xenconsoled.service") CONFIG_FILES="$CONFIG_FILES hotplug/Linux/systemd/xenconsoled.service" ;; "hotplug/Linux/systemd/xendomains.service") CONFIG_FILES="$CONFIG_FILES hotplug/Linux/systemd/xendomains.service" ;; + "hotplug/Linux/systemd/xendriverdomain.service") CONFIG_FILES="$CONFIG_FILES hotplug/Linux/systemd/xendriverdomain.service" ;; "hotplug/Linux/systemd/xenstored.service") CONFIG_FILES="$CONFIG_FILES hotplug/Linux/systemd/xenstored.service" ;; "hotplug/Linux/systemd/xenstored.socket") CONFIG_FILES="$CONFIG_FILES hotplug/Linux/systemd/xenstored.socket" ;; "hotplug/Linux/systemd/xenstored_ro.socket") CONFIG_FILES="$CONFIG_FILES hotplug/Linux/systemd/xenstored_ro.socket" ;; diff --git a/tools/configure.ac b/tools/configure.ac index 8704927443..87e14a8c98 100644 --- a/tools/configure.ac +++ b/tools/configure.ac @@ -436,6 +436,7 @@ AS_IF([test "x$systemd" = "xy"], [ hotplug/Linux/systemd/xen-watchdog.service hotplug/Linux/systemd/xenconsoled.service hotplug/Linux/systemd/xendomains.service + hotplug/Linux/systemd/xendriverdomain.service hotplug/Linux/systemd/xenstored.service hotplug/Linux/systemd/xenstored.socket hotplug/Linux/systemd/xenstored_ro.socket diff --git a/tools/hotplug/Linux/systemd/Makefile b/tools/hotplug/Linux/systemd/Makefile index 83e3b32f77..558e459a19 100644 --- a/tools/hotplug/Linux/systemd/Makefile +++ b/tools/hotplug/Linux/systemd/Makefile @@ -15,6 +15,7 @@ XEN_SYSTEMD_SERVICE += xen-qemu-dom0-disk-backend.service XEN_SYSTEMD_SERVICE += xendomains.service XEN_SYSTEMD_SERVICE += xen-watchdog.service XEN_SYSTEMD_SERVICE += xen-init-dom0.service +XEN_SYSTEMD_SERVICE += xendriverdomain.service ALL_XEN_SYSTEMD = $(XEN_SYSTEMD_MODULES) \ $(XEN_SYSTEMD_MOUNT) \ diff --git a/tools/hotplug/Linux/systemd/xendriverdomain.service.in b/tools/hotplug/Linux/systemd/xendriverdomain.service.in new file mode 100644 index 0000000000..c0cd454b6a --- /dev/null +++ b/tools/hotplug/Linux/systemd/xendriverdomain.service.in @@ -0,0 +1,14 @@ +[Unit] +Description=Xen driver domain device daemon +DefaultDependencies=no +Requires=proc-xen.mount +After=proc-xen.mount +ConditionVirtualization=xen + +[Service] +Type=forking +ExecStart=@sbindir@/xl devd --pidfile=/var/run/xldevd.pid +PIDFile=/var/run/xldevd.pid + +[Install] +WantedBy=multi-user.target