]> xenbits.xensource.com Git - libvirt.git/commitdiff
nodedev: introduce virtnodedevd daemon
authorDaniel P. Berrangé <berrange@redhat.com>
Fri, 16 Mar 2018 17:05:24 +0000 (17:05 +0000)
committerDaniel P. Berrangé <berrange@redhat.com>
Fri, 9 Aug 2019 13:06:31 +0000 (14:06 +0100)
The virtnodedevd daemon will be responsible for providing the nodedev API
driver functionality. The nodedev driver is still loaded by the main
libvirtd daemon at this stage, so virtnodedevd must not be running at
the same time.

Reviewed-by: Andrea Bolognani <abologna@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
.gitignore
libvirt.spec.in
src/node_device/Makefile.inc.am
src/node_device/virtnodedevd.service.in [new file with mode: 0644]

index 58a1ef1293f038e71bf3b6d003fbeb0704842c66..c4f6c0ab2f76668afb67dae74000fc756d49226c 100644 (file)
 /src/network/test_virtnetworkd.aug
 /src/network/virtnetworkd.aug
 /src/network/virtnetworkd.conf
+/src/node_device/test_virtnodedevd.aug
+/src/node_device/virtnodedevd.aug
+/src/node_device/virtnodedevd.conf
 /src/qemu/test_libvirtd_qemu.aug
 /src/remote/*_client_bodies.h
 /src/remote/*_protocol.[ch]
 /src/virtlockd
 /src/virtlogd
 /src/virtnetworkd
+/src/virtnodedevd
 /src/virtproxyd
 /src/virtsecretd
 /src/virtstoraged
index 35288b0e2d134fe02d86d2cb75cf043095204ba5..a3c01e7d21228ab0dccd45f69fbc97853f94b4ce 100644 (file)
@@ -1642,6 +1642,14 @@ exit 0
 %endif
 
 %files daemon-driver-nodedev
+%config(noreplace) %{_sysconfdir}/libvirt/virtnodedevd.conf
+%{_datadir}/augeas/lenses/virtnodedevd.aug
+%{_datadir}/augeas/lenses/tests/test_virtnodedevd.aug
+%{_unitdir}/virtnodedevd.service
+%{_unitdir}/virtnodedevd.socket
+%{_unitdir}/virtnodedevd-ro.socket
+%{_unitdir}/virtnodedevd-admin.socket
+%attr(0755, root, root) %{_sbindir}/virtnodedevd
 %{_libdir}/%{name}/connection-driver/libvirt_driver_nodedev.so
 
 %files daemon-driver-nwfilter
index 3e04651e8c8d8f1a67d581a7b5dc538c44a79cff..5a6525d843407c29eeba654a43300fa7be693f10 100644 (file)
@@ -64,4 +64,67 @@ libvirt_driver_nodedev_la_LIBADD += \
 endif WITH_UDEV
 
 libvirt_driver_nodedev_la_LIBADD += ../gnulib/lib/libgnu.la
+
+sbin_PROGRAMS += virtnodedevd
+
+nodist_conf_DATA += node_device/virtnodedevd.conf
+augeas_DATA += node_device/virtnodedevd.aug
+augeastest_DATA += node_device/test_virtnodedevd.aug
+CLEANFILES += node_device/virtnodedevd.aug
+
+virtnodedevd_SOURCES = $(REMOTE_DAEMON_SOURCES)
+virtnodedevd_CFLAGS = \
+       $(REMOTE_DAEMON_CFLAGS) \
+       -DDAEMON_NAME="\"virtnodedevd\"" \
+       -DMODULE_NAME="\"nodedev\"" \
+       $(NULL)
+virtnodedevd_LDFLAGS = $(REMOTE_DAEMON_LD_FLAGS)
+virtnodedevd_LDADD = $(REMOTE_DAEMON_LD_ADD)
+
+SYSTEMD_UNIT_FILES += \
+       virtnodedevd.service \
+       virtnodedevd.socket \
+       virtnodedevd-ro.socket \
+       virtnodedevd-admin.socket \
+       $(NULL)
+SYSTEMD_UNIT_FILES_IN += \
+       node_device/virtnodedevd.service.in \
+       $(NULL)
+
+VIRTNODEDEVD_UNIT_VARS = \
+       $(VIRTD_UNIT_VARS) \
+       -e 's|[@]name[@]|Libvirt nodedev|g' \
+       -e 's|[@]service[@]|virtnodedevd|g' \
+       -e 's|[@]sockprefix[@]|virtnodedevd|g' \
+       $(NULL)
+
+virtnodedevd.service: node_device/virtnodedevd.service.in $(top_builddir)/config.status
+       $(AM_V_GEN)$(SED) $(VIRTNODEDEVD_UNIT_VARS) $< > $@-t && mv $@-t $@
+
+virtnodedev%.socket: remote/libvirt%.socket.in $(top_builddir)/config.status
+       $(AM_V_GEN)$(SED) $(VIRTNODEDEVD_UNIT_VARS) $< > $@-t && mv $@-t $@
+
+node_device/virtnodedevd.conf: remote/libvirtd.conf.in
+       $(AM_V_GEN)$(SED) \
+               -e '/[@]CUT_ENABLE_IP[@]/,/[@]END[@]/d' \
+               -e 's/[@]DAEMON_NAME[@]/virtnodedevd/' \
+               $< > $@
+
+node_device/virtnodedevd.aug: remote/libvirtd.aug.in
+       $(AM_V_GEN)$(SED) \
+               -e '/[@]CUT_ENABLE_IP[@]/,/[@]END[@]/d' \
+               -e 's/[@]DAEMON_NAME[@]/virtnodedevd/' \
+               -e 's/[@]DAEMON_NAME_UC[@]/Virtnodedevd/' \
+               $< > $@
+
+node_device/test_virtnodedevd.aug: remote/test_libvirtd.aug.in \
+               node_device/virtnodedevd.conf $(AUG_GENTEST)
+       $(AM_V_GEN)$(AUG_GENTEST) node_device/virtnodedevd.conf \
+               $(srcdir)/remote/test_libvirtd.aug.in | \
+               $(SED) \
+               -e '/[@]CUT_ENABLE_IP[@]/,/[@]END[@]/d' \
+               -e 's/[@]DAEMON_NAME[@]/virtnodedevd/' \
+               -e 's/[@]DAEMON_NAME_UC[@]/Virtnodedevd/' \
+               > $@ || rm -f $@
+
 endif WITH_NODE_DEVICES
diff --git a/src/node_device/virtnodedevd.service.in b/src/node_device/virtnodedevd.service.in
new file mode 100644 (file)
index 0000000..132ee05
--- /dev/null
@@ -0,0 +1,24 @@
+[Unit]
+Description=Virtualization nodedev daemon
+Conflicts=libvirtd.service
+Requires=virtnodedevd.socket
+Requires=virtnodedevd-ro.socket
+Requires=virtnodedevd-admin.socket
+After=network.target
+After=dbus.service
+After=apparmor.service
+After=local-fs.target
+Documentation=man:libvirtd(8)
+Documentation=https://libvirt.org
+
+[Service]
+Type=notify
+ExecStart=@sbindir@/virtnodedevd --timeout 120
+ExecReload=/bin/kill -HUP $MAINPID
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
+Also=virtnodedevd.socket
+Also=virtnodedevd-ro.socket
+Also=virtnodedevd-admin.socket