From ac1ea2ef126efb5d7900bb32d475556db3c08747 Mon Sep 17 00:00:00 2001 From: Sebastien Buisson Date: Thu, 25 Apr 2024 18:42:44 +0200 Subject: [PATCH] LU-17741 gss: fix lsvcgss service for systemd Add a systemd unit file for lsvcgss service, so that the lsvcgssd daemon can be handled correctly via systemctl. Lustre-change: https://review.whamcloud.com/54915 Lustre-commit: TBD (from ab83ed4cd83370f412e2e151e482bdb3cfef16dd) Test-Parameters: trivial Signed-off-by: Sebastien Buisson Change-Id: I7581996e1e28567415da0827681841ac228ad6c5 Reviewed-on: https://review.whamcloud.com/c/ex/lustre-release/+/55087 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Andreas Dilger --- lustre.spec.in | 5 +++++ lustre/scripts/Makefile.am | 6 ++++-- lustre/scripts/lsvcgss_sysd | 22 ++++++++++++++++++++++ lustre/scripts/systemd/Makefile.am | 3 ++- lustre/scripts/systemd/lsvcgss.service | 8 ++++++++ lustre/utils/gss/svcgssd.c | 5 ++++- 6 files changed, 45 insertions(+), 4 deletions(-) create mode 100644 lustre/scripts/lsvcgss_sysd create mode 100644 lustre/scripts/systemd/lsvcgss.service diff --git a/lustre.spec.in b/lustre.spec.in index 9e0025e..d9fc786 100644 --- a/lustre.spec.in +++ b/lustre.spec.in @@ -843,6 +843,7 @@ echo '%{_sysconfdir}/ha.d/resource.d/Lustre' >>lustre.files # systemd is on redhat, fedora, and suse %if %{with systemd} echo '%{_unitdir}/lnet.service' >>lustre.files +echo '%{_unitdir}/lsvcgss.service' >>lustre.files %endif %if "%{_vendor}" == "redhat" @@ -942,6 +943,7 @@ fi %{_bindir}/lustre_req_history %{_bindir}/remove_changelog %{_bindir}/remove_updatelog +%{_bindir}/lsvcgss_sysd %endif %{_bindir}/ll_compression_scan @@ -1052,16 +1054,19 @@ fi %post %if %{with systemd} %systemd_post lnet.service +%systemd_post lsvcgss.service %endif %preun %if %{with systemd} %systemd_preun lnet.service +%systemd_preun lsvcgss.service %endif %postun %if %{with systemd} %systemd_postun_with_restart lnet.service +%systemd_postun_with_restart lsvcgss.service %endif %clean diff --git a/lustre/scripts/Makefile.am b/lustre/scripts/Makefile.am index 1754e1f..14cf787 100644 --- a/lustre/scripts/Makefile.am +++ b/lustre/scripts/Makefile.am @@ -61,7 +61,8 @@ bin_SCRIPTS = lfs_migrate ll_compression_scan if SERVER sbin_SCRIPTS += $(genscripts) lc_mon lhbadm lc_servip -bin_SCRIPTS += lustre_req_history remove_changelog remove_updatelog +bin_SCRIPTS += lustre_req_history remove_changelog remove_updatelog \ + lsvcgss_sysd hadir = $(sysconfdir)/ha.d/resource.d ha_SCRIPTS = Lustre.ha_v2 @@ -90,7 +91,8 @@ EXTRA_DIST = license-status lustre_rmmod ldev lc_mon lhbadm \ lustre lsvcgss lc_common haconfig Lustre.ha_v2 dkms.mkconf \ ko2iblnd-probe ksocklnd-config statechange-lustre.sh \ bash-completion/lustre bash-completion/lctl bash-completion/lfs \ - umount.lustre remove_changelog remove_updatelog ll_compression_scan + umount.lustre remove_changelog remove_updatelog \ + ll_compression_scan lsvcgss_sysd CLEANFILES = $(genscripts) diff --git a/lustre/scripts/lsvcgss_sysd b/lustre/scripts/lsvcgss_sysd new file mode 100644 index 0000000..0eec92a --- /dev/null +++ b/lustre/scripts/lsvcgss_sysd @@ -0,0 +1,22 @@ +#!/bin/bash +# +# lsvcgss Lustre GSS daemon +# + +# Must be identical to what lsvcgss.service uses +PIDFILE=/var/run/lsvcgss.pid + +# If service is not configured, launch with all mechs +# -k -- Enable kerberos support +# -s -- Enable shared key support +# -z -- Enable gssnull support +LSVCGSSDARGS="-k -s -z" + +# Check for and source configuration file +[ -f /etc/sysconfig/lsvcgss ] && . /etc/sysconfig/lsvcgss + +/usr/sbin/lsvcgssd ${LSVCGSSDARGS} +RETVAL=$? +[ $RETVAL -eq 0 ] && echo $(pidof lsvcgssd) > $PIDFILE + +exit $RETVAL diff --git a/lustre/scripts/systemd/Makefile.am b/lustre/scripts/systemd/Makefile.am index 340f6f1..18700c6 100644 --- a/lustre/scripts/systemd/Makefile.am +++ b/lustre/scripts/systemd/Makefile.am @@ -3,9 +3,10 @@ genunitfiles = lnet.service if HAVE_SYSTEMD systemdsystemunit_DATA = lnet.service +systemdsystemunit_SCRIPTS = lsvcgss.service endif -EXTRA_DIST = $(addsuffix .in,$(genunitfiles)) +EXTRA_DIST = $(addsuffix .in,$(genunitfiles)) lsvcgss.service CLEANFILES = $(genunitfiles) diff --git a/lustre/scripts/systemd/lsvcgss.service b/lustre/scripts/systemd/lsvcgss.service new file mode 100644 index 0000000..d4996ba --- /dev/null +++ b/lustre/scripts/systemd/lsvcgss.service @@ -0,0 +1,8 @@ +[Unit] +Description=Lustre GSS daemon + +[Service] +Type=forking +ExecStart=/usr/bin/lsvcgss_sysd +ExecReload=/bin/kill -HUP $MAINPID +PIDFile=/var/run/lsvcgss.pid diff --git a/lustre/utils/gss/svcgssd.c b/lustre/utils/gss/svcgssd.c index 18c36ae..a2c69fc 100644 --- a/lustre/utils/gss/svcgssd.c +++ b/lustre/utils/gss/svcgssd.c @@ -178,7 +178,10 @@ sig_die(int signal) /* remove socket */ unlink(GSS_SOCKET_PATH); printerr(LL_WARN, "exiting on signal %d\n", signal); - exit(1); + if (signal == SIGTERM) + exit(EXIT_SUCCESS); + else + exit(EXIT_FAILURE); } static void -- 1.8.3.1