summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLee Duncan <lduncan@suse.com>2019-05-14 11:18:40 -0700
committerLee Duncan <lduncan@suse.com>2019-05-14 11:18:40 -0700
commitc1870ae6dddb7bc2dbdc750df68edbbe1a80763f (patch)
treee2bb1d656a9864e3945a025e8b0a7a7cab226afa
parent1aa16e914eec3c97210a93dfab25b194e56a8298 (diff)
downloadopen-iscsi-c1870ae6dddb7bc2dbdc750df68edbbe1a80763f.tar.gz
Add systemd support for iscsiuio
Add in example socket and service files for iscsiuio, such that it can socket-activated, as is iscsid. Also, update main in iscsiuio to use sd_notify() when it is ready for business. All of the systemd code can be skipped if NO_SYSTEMD is defined when building.
-rw-r--r--etc/systemd/iscsiuio.service19
-rw-r--r--etc/systemd/iscsiuio.socket9
-rw-r--r--iscsiuio/src/unix/main.c8
3 files changed, 36 insertions, 0 deletions
diff --git a/etc/systemd/iscsiuio.service b/etc/systemd/iscsiuio.service
new file mode 100644
index 0000000..e4d9fd0
--- /dev/null
+++ b/etc/systemd/iscsiuio.service
@@ -0,0 +1,19 @@
+[Unit]
+Description=iSCSI UserSpace I/O driver
+Documentation=man:iscsiuio(8)
+DefaultDependencies=no
+Conflicts=shutdown.target
+Requires=iscsid.service
+BindTo=iscsid.service
+After=network.target
+Before=remote-fs-pre.target iscsid.service
+
+[Service]
+Type=notify
+NotifyAccess=main
+ExecStart=/sbin/iscsiuio -f
+KillMode=mixed
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
diff --git a/etc/systemd/iscsiuio.socket b/etc/systemd/iscsiuio.socket
new file mode 100644
index 0000000..d42cedc
--- /dev/null
+++ b/etc/systemd/iscsiuio.socket
@@ -0,0 +1,9 @@
+[Unit]
+Description=Open-iSCSI iscsiuio Socket
+Documentation=man:iscsiuio(8)
+
+[Socket]
+ListenStream=@ISCSID_UIP_ABSTRACT_NAMESPACE
+
+[Install]
+WantedBy=sockets.target
diff --git a/iscsiuio/src/unix/main.c b/iscsiuio/src/unix/main.c
index dd7df4d..5168e4e 100644
--- a/iscsiuio/src/unix/main.c
+++ b/iscsiuio/src/unix/main.c
@@ -48,6 +48,9 @@
#include <net/ethernet.h>
#include <arpa/inet.h>
#include <sys/mman.h>
+#ifndef NO_SYSTEMD
+#include <systemd/sd-daemon.h>
+#endif
#include "uip.h"
#include "uip_arp.h"
@@ -416,6 +419,11 @@ int main(int argc, char *argv[])
close(pipefds[1]);
}
+#ifndef NO_SYSTEMD
+ sd_notify(0, "READY=1\n"
+ "STATUS=Ready to process requests\n");
+#endif
+
/* NetLink connection to listen to NETLINK_ISCSI private messages */
if (nic_nl_open() != 0)
goto error;