diff mbox

[v2] tools/hotplug: Add native systemd xendriverdomain.service

Message ID 1467900572-16087-1-git-send-email-rustybird@openmailbox.org (mailing list archive)
State New, archived
Headers show

Commit Message

Rusty Bird July 7, 2016, 2:09 p.m. UTC
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 <rustybird@openmailbox.org>
Cc: Ian Jackson <ian.jackson@eu.citrix.com>
Cc: Wei Liu <wei.liu2@citrix.com>
---
Changed since v1:
  * more detailed commit message

 tools/configure.ac                                     |  1 +
 tools/hotplug/Linux/systemd/Makefile                   |  1 +
 tools/hotplug/Linux/systemd/xendriverdomain.service.in | 14 ++++++++++++++
 3 files changed, 16 insertions(+)
 create mode 100644 tools/hotplug/Linux/systemd/xendriverdomain.service.in

Comments

Wei Liu July 7, 2016, 2:27 p.m. UTC | #1
On Thu, Jul 07, 2016 at 02:09:32PM +0000, Rusty Bird wrote:
> 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 <rustybird@openmailbox.org>
> Cc: Ian Jackson <ian.jackson@eu.citrix.com>
> Cc: Wei Liu <wei.liu2@citrix.com>

Thanks, the commit message is clearer now.

Acked-by: Wei Liu <wei.liu2@citrix.com>

> ---
> Changed since v1:
>   * more detailed commit message
> 
>  tools/configure.ac                                     |  1 +
>  tools/hotplug/Linux/systemd/Makefile                   |  1 +
>  tools/hotplug/Linux/systemd/xendriverdomain.service.in | 14 ++++++++++++++
>  3 files changed, 16 insertions(+)
>  create mode 100644 tools/hotplug/Linux/systemd/xendriverdomain.service.in
> 
> diff --git a/tools/configure.ac b/tools/configure.ac
> index 8704927..e08fa8e 100644
> --- a/tools/configure.ac
> +++ b/tools/configure.ac
> @@ -437,6 +437,7 @@ AS_IF([test "x$systemd" = "xy"], [
>      hotplug/Linux/systemd/xenconsoled.service
>      hotplug/Linux/systemd/xendomains.service
>      hotplug/Linux/systemd/xenstored.service
> +    hotplug/Linux/systemd/xendriverdomain.service

I failed to mention that I would like to sort this list alphabetically,
i.e. the new addition should be moved before xenstored.service.  I can
make the adjustment while committing if you don't object.

Wei.
Rusty Bird July 7, 2016, 2:45 p.m. UTC | #2
Wei Liu:
>> diff --git a/tools/configure.ac b/tools/configure.ac
>> index 8704927..e08fa8e 100644
>> --- a/tools/configure.ac
>> +++ b/tools/configure.ac
>> @@ -437,6 +437,7 @@ AS_IF([test "x$systemd" = "xy"], [
>>      hotplug/Linux/systemd/xenconsoled.service
>>      hotplug/Linux/systemd/xendomains.service
>>      hotplug/Linux/systemd/xenstored.service
>> +    hotplug/Linux/systemd/xendriverdomain.service
> 
> I failed to mention that I would like to sort this list alphabetically,
> i.e. the new addition should be moved before xenstored.service.  I can
> make the adjustment while committing if you don't object.

Of course, thank you!

Rusty
diff mbox

Patch

diff --git a/tools/configure.ac b/tools/configure.ac
index 8704927..e08fa8e 100644
--- a/tools/configure.ac
+++ b/tools/configure.ac
@@ -437,6 +437,7 @@  AS_IF([test "x$systemd" = "xy"], [
     hotplug/Linux/systemd/xenconsoled.service
     hotplug/Linux/systemd/xendomains.service
     hotplug/Linux/systemd/xenstored.service
+    hotplug/Linux/systemd/xendriverdomain.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 83e3b32..558e459 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 0000000..c0cd454
--- /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