From: Dmitry Eremin Date: Fri, 8 Jul 2016 21:15:37 +0000 (+0300) Subject: LU-8384 scripts: Add scripts to systemd for EL7 X-Git-Tag: 2.12.53~110 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=495deddfbb43f247b2fa9dd2da5743abc89cd862 LU-8384 scripts: Add scripts to systemd for EL7 When rebooting a lustre client where Lustre filesystem is still mounted, the shutdown hangs. This patch create a systemd service that unmount the Lustre filesystems and unload the Lustre modules when system is shutdown. Test-Parameters: trivial Change-Id: I1cfe84684e23b8861743241dfbc4d6e320ace4a6 Signed-off-by: Dmitry Eremin Signed-off-by: Gregoire Pichon Signed-off-by: Nathaniel Clark Reviewed-on: https://review.whamcloud.com/21457 Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Gu Zheng Reviewed-by: Oleg Drokin --- diff --git a/lustre.spec.in b/lustre.spec.in index 8ab88ce..75a705c 100644 --- a/lustre.spec.in +++ b/lustre.spec.in @@ -394,12 +394,12 @@ 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}/lustre.service' >>lustre.files %endif %if %{_vendor}=="redhat" # The following scripts are Red Hat specific %if %{with servers} -echo '%{_sysconfdir}/init.d/lustre' >>lustre.files echo '%{_sysconfdir}/sysconfig/lustre' >>lustre.files %if %{with gss_keyring} echo '%{_sysconfdir}/init.d/lsvcgss' >>lustre.files @@ -409,6 +409,7 @@ echo '%{_sysconfdir}/sysconfig/lsvcgss' >>lustre.files %if %{without systemd} echo '%{_sysconfdir}/init.d/lnet' >>lustre.files +echo '%{_sysconfdir}/init.d/lustre' >>lustre.files %endif %endif %if %{with gss_keyring} @@ -572,15 +573,18 @@ echo '%{_sbindir}/wiretest' >>lustre-tests.files %post %if %{with systemd} %systemd_post lnet.service +%systemd_post lustre.service %endif %preun %if %{with systemd} +%systemd_preun lustre.service %systemd_preun lnet.service %endif %postun %if %{with systemd} +%systemd_postun_with_restart lustre.service %systemd_postun_with_restart lnet.service %endif diff --git a/lustre/scripts/Makefile.am b/lustre/scripts/Makefile.am index f834235..3757519 100644 --- a/lustre/scripts/Makefile.am +++ b/lustre/scripts/Makefile.am @@ -48,7 +48,9 @@ init_SCRIPTS += lnet endif if SERVER +if !HAVE_SYSTEMD init_SCRIPTS += lustre +endif if GSS_KEYRING init_SCRIPTS += lsvcgss endif @@ -85,7 +87,7 @@ endif # UTILS EXTRA_DIST = license-status lustre_rmmod ldev lc_mon lhbadm \ lc_servip lustre_routes_config lustre_routes_conversion \ $(addsuffix .in,$(genscripts)) lfs_migrate lustre_req_history \ - lustre lsvcgss lc_common haconfig Lustre.ha_v2 dkms.mkconf \ + lsvcgss lc_common haconfig Lustre.ha_v2 dkms.mkconf \ zfsobj2fid ko2iblnd-probe statechange-lustre.sh CLEANFILES = $(genscripts) diff --git a/lustre/scripts/lustre b/lustre/scripts/lustre index 919efb0..f258cb4 100644 --- a/lustre/scripts/lustre +++ b/lustre/scripts/lustre @@ -1,12 +1,19 @@ #!/bin/bash # # lustre This shell script takes care of starting and stopping -# the lustre services. +# the lustre services. # # chkconfig: - 60 20 # description: Part of the lustre file system. # probe: true # config: /etc/sysconfig/lustre +### BEGIN INIT INFO +# Provides: lustre +# Required-Start: openibd +# Defalt-Start: - +# Default-Stop: 0 1 6 +# Description: Lustre init script +### END INIT INFO PATH=/sbin:/usr/sbin:/bin:/usr/bin diff --git a/lustre/scripts/systemd/Makefile.am b/lustre/scripts/systemd/Makefile.am index 340f6f1..47f7fe7 100644 --- a/lustre/scripts/systemd/Makefile.am +++ b/lustre/scripts/systemd/Makefile.am @@ -1,8 +1,9 @@ # These are scripts that are generated from .in files -genunitfiles = lnet.service +genunitfiles = lnet.service lustre.service if HAVE_SYSTEMD systemdsystemunit_DATA = lnet.service +systemdsystemunit_DATA += lustre.service endif EXTRA_DIST = $(addsuffix .in,$(genunitfiles)) @@ -11,4 +12,5 @@ CLEANFILES = $(genunitfiles) $(genunitfiles): %: %.in sed -e 's,@sbindir\@,$(sbindir),g' \ + -e 's,@bindir\@,$(bindir),g' \ -e 's,@sysconfdir\@,$(sysconfdir),g' $< > $@ diff --git a/lustre/scripts/systemd/lustre.service.in b/lustre/scripts/systemd/lustre.service.in new file mode 100644 index 0000000..26d907d --- /dev/null +++ b/lustre/scripts/systemd/lustre.service.in @@ -0,0 +1,16 @@ +[Unit] +Description=Lustre shutdown +After=network.target network-online.target lnet.service +DefaultDependencies=false +Conflicts=umount.target + +[Service] +Type=oneshot +RemainAfterExit=true +ExecStart=/bin/true +ExecStop=@bindir@/umount -a -t lustre +ExecStop=@sbindir@/lustre_rmmod + +[Install] +WantedBy=sysinit.target +WantedBy=final.target