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 <dmitry.eremin@intel.com>
Signed-off-by: Gregoire Pichon <gregoire.pichon@atos.net>
Signed-off-by: Nathaniel Clark <nclark@whamcloud.com>
Reviewed-on: https://review.whamcloud.com/21457
Tested-by: Jenkins
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Gu Zheng <gzheng@ddn.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
# systemd is on redhat, fedora, and suse
%if %{with systemd}
echo '%{_unitdir}/lnet.service' >>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}
%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
echo '%{_sysconfdir}/sysconfig/lustre' >>lustre.files
%if %{with gss_keyring}
echo '%{_sysconfdir}/init.d/lsvcgss' >>lustre.files
%if %{without systemd}
echo '%{_sysconfdir}/init.d/lnet' >>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}
%endif
%endif
%if %{with gss_keyring}
%post
%if %{with systemd}
%systemd_post lnet.service
%post
%if %{with systemd}
%systemd_post lnet.service
+%systemd_post lustre.service
%endif
%preun
%if %{with systemd}
%endif
%preun
%if %{with systemd}
+%systemd_preun lustre.service
%systemd_preun lnet.service
%endif
%postun
%if %{with systemd}
%systemd_preun lnet.service
%endif
%postun
%if %{with systemd}
+%systemd_postun_with_restart lustre.service
%systemd_postun_with_restart lnet.service
%endif
%systemd_postun_with_restart lnet.service
%endif
if GSS_KEYRING
init_SCRIPTS += lsvcgss
endif
if GSS_KEYRING
init_SCRIPTS += lsvcgss
endif
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 \
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)
zfsobj2fid ko2iblnd-probe statechange-lustre.sh
CLEANFILES = $(genscripts)
#!/bin/bash
#
# lustre This shell script takes care of starting and stopping
#!/bin/bash
#
# lustre This shell script takes care of starting and stopping
#
# chkconfig: - 60 20
# description: Part of the lustre file system.
# probe: true
# config: /etc/sysconfig/lustre
#
# 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
PATH=/sbin:/usr/sbin:/bin:/usr/bin
# These are scripts that are generated from .in files
# These are scripts that are generated from .in files
-genunitfiles = lnet.service
+genunitfiles = lnet.service lustre.service
if HAVE_SYSTEMD
systemdsystemunit_DATA = lnet.service
if HAVE_SYSTEMD
systemdsystemunit_DATA = lnet.service
+systemdsystemunit_DATA += lustre.service
endif
EXTRA_DIST = $(addsuffix .in,$(genunitfiles))
endif
EXTRA_DIST = $(addsuffix .in,$(genunitfiles))
$(genunitfiles): %: %.in
sed -e 's,@sbindir\@,$(sbindir),g' \
$(genunitfiles): %: %.in
sed -e 's,@sbindir\@,$(sbindir),g' \
+ -e 's,@bindir\@,$(bindir),g' \
-e 's,@sysconfdir\@,$(sysconfdir),g' $< > $@
-e 's,@sysconfdir\@,$(sysconfdir),g' $< > $@
--- /dev/null
+[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