From 56601d61928d21b239449e52c488a803bb557d97c7644358ee6449d00cc1b8ac Mon Sep 17 00:00:00 2001 From: Neil Brown Date: Wed, 5 Nov 2014 00:53:10 +0000 Subject: [PATCH] - new upstream nfs-utils-1.3.1 This brings numerous fixes, particularly to gssd and nfsdcltrack. It incorporates all the upstreamable patches we had: - Delete nfsdcltrack.sbin.patch - Delete start-statd.patch - 0001-nfs-client.target-Removed-a-ordering-cycle-with-nfs-.patch 0002-Centralize-dependencies-on-the-auth-unit.patch Patches from 1.3.2-rc, which look useful - Convert from /etc/init.d startup scripts to full systemd integration. The upstream standard names are "nfs-client" and "nfs-server" rather than "nfs" and "nfsserver", so local "nfs" "nfsserver" aliases are created and "rcXXX" links are provided for all 4. OBS-URL: https://build.opensuse.org/package/show/Base:System/nfs-utils?expand=0&rev=134 --- ...t-Removed-a-ordering-cycle-with-nfs-.patch | 37 ++ ...ralize-dependencies-on-the-auth-unit.patch | 87 ++++ nfs-client.nfs.conf | 4 + nfs-config.restart.conf | 4 + nfs-server.nfsserver.conf | 4 + nfs-utils-1.0.7-bind-syntax.patch | 6 +- nfs-utils-1.3.0.tar.xz | 3 - nfs-utils-1.3.1.tar.xz | 3 + nfs-utils.changes | 19 + nfs-utils.spec | 81 +++- nfs-utils_env.sh | 62 +++ nfs.init | 399 ----------------- nfs.service | 22 + nfsdcltrack.sbin.patch | 16 - nfsserver.init | 416 ------------------ nfsserver.service | 23 + start-statd.patch | 20 - 17 files changed, 325 insertions(+), 881 deletions(-) create mode 100644 0001-nfs-client.target-Removed-a-ordering-cycle-with-nfs-.patch create mode 100644 0002-Centralize-dependencies-on-the-auth-unit.patch create mode 100644 nfs-client.nfs.conf create mode 100644 nfs-config.restart.conf create mode 100644 nfs-server.nfsserver.conf delete mode 100644 nfs-utils-1.3.0.tar.xz create mode 100644 nfs-utils-1.3.1.tar.xz create mode 100644 nfs-utils_env.sh delete mode 100644 nfs.init create mode 100644 nfs.service delete mode 100644 nfsdcltrack.sbin.patch delete mode 100644 nfsserver.init create mode 100644 nfsserver.service delete mode 100644 start-statd.patch diff --git a/0001-nfs-client.target-Removed-a-ordering-cycle-with-nfs-.patch b/0001-nfs-client.target-Removed-a-ordering-cycle-with-nfs-.patch new file mode 100644 index 0000000..b380cb8 --- /dev/null +++ b/0001-nfs-client.target-Removed-a-ordering-cycle-with-nfs-.patch @@ -0,0 +1,37 @@ +From 12a95edae598ba0c63a30b07d7b3529871e145e2 Mon Sep 17 00:00:00 2001 +From: Steve Dickson +Date: Mon, 29 Sep 2014 11:23:39 -0400 +Subject: [PATCH 1/2] nfs-client.target: Removed a ordering cycle with + nfs-server.service + +On a VM that boots very fast and with out kerberos +enabled a systemd ordering cycle happens between +nfs-client and nfs-server units when both were +enabled. + +Having nfs-client start the gssd daemons in the +same matter as the nfs-server does ('After=') seemed +to eliminated the ordering cycle. + +Acked-by: J. Bruce Fields +Signed-off-by: Steve Dickson +--- + systemd/nfs-client.target | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/systemd/nfs-client.target b/systemd/nfs-client.target +index 474f5e9ad74b..87a1ce8cec8f 100644 +--- a/systemd/nfs-client.target ++++ b/systemd/nfs-client.target +@@ -7,7 +7,7 @@ Wants=remote-fs-pre.target + # start that on demand if needed. + Wants=rpc-gssd.service rpc-svcgssd.service auth-rpcgss-module.service + Wants=nfs-blkmap.service rpc-statd-notify.service +-Before=rpc-gssd.service rpc-svcgssd.service nfs-blkmap.service ++After=rpc-gssd.service rpc-svcgssd.service nfs-blkmap.service + + [Install] + WantedBy=multi-user.target +-- +2.1.1 + diff --git a/0002-Centralize-dependencies-on-the-auth-unit.patch b/0002-Centralize-dependencies-on-the-auth-unit.patch new file mode 100644 index 0000000..f22d4a9 --- /dev/null +++ b/0002-Centralize-dependencies-on-the-auth-unit.patch @@ -0,0 +1,87 @@ +From 8d51c77c81f0cd5b0b8508eb50d5a53d6d2375ae Mon Sep 17 00:00:00 2001 +From: Simo Sorce +Date: Tue, 30 Sep 2014 15:33:10 -0400 +Subject: [PATCH 2/2] Centralize dependencies on the auth unit. + +With this patch either gssproxy or rpc.svcgssd are started only if the +auth module is requested, and it finds a keytab. +If the wants are in the main nfs-client or nfs-server unit files then +the two deamons are started unconditionally and would require +conditions which we can test once and for all in a single unit file +instead. + +Change also Before and After statments accordingly to properly +serialize loading modules and starting daemons in 3 steps +1. load kernel GSS auth module +2. start GSS handling daemons +3. start NFS client/server daemons + +Signed-off-by: Simo Sorce +Signed-off-by: Steve Dickson +--- + systemd/auth-rpcgss-module.service | 3 ++- + systemd/nfs-client.target | 7 +++++-- + systemd/nfs-server.service | 8 +++++--- + 3 files changed, 12 insertions(+), 6 deletions(-) + +diff --git a/systemd/auth-rpcgss-module.service b/systemd/auth-rpcgss-module.service +index 3fc2f4ac924f..0355e13e0095 100644 +--- a/systemd/auth-rpcgss-module.service ++++ b/systemd/auth-rpcgss-module.service +@@ -6,7 +6,8 @@ + # unit will fail. But that's OK.) + [Unit] + Description=Kernel Module supporting RPCSEC_GSS +-Before=gssproxy.service rpc-svcgssd.service ++Before=gssproxy.service rpc-svcgssd.service rpc-gssd.service ++Wants=gssproxy.service rpc-svcgssd.service rpc-gssd.service + ConditionPathExists=/etc/krb5.keytab + + [Service] +diff --git a/systemd/nfs-client.target b/systemd/nfs-client.target +index 87a1ce8cec8f..9b792a363e14 100644 +--- a/systemd/nfs-client.target ++++ b/systemd/nfs-client.target +@@ -5,9 +5,12 @@ Wants=remote-fs-pre.target + + # Note: we don't "Wants=rpc-statd.service" as "mount.nfs" will arrange to + # start that on demand if needed. +-Wants=rpc-gssd.service rpc-svcgssd.service auth-rpcgss-module.service + Wants=nfs-blkmap.service rpc-statd-notify.service +-After=rpc-gssd.service rpc-svcgssd.service nfs-blkmap.service ++After=nfs-blkmap.service ++ ++# GSS services dependencies and ordering ++Wants=auth-rpcgss-module.service ++After=rpc-gssd.service rpc-svcgssd.service gssproxy.service + + [Install] + WantedBy=multi-user.target +diff --git a/systemd/nfs-server.service b/systemd/nfs-server.service +index 1048c5cbbf68..8010aadc4870 100644 +--- a/systemd/nfs-server.service ++++ b/systemd/nfs-server.service +@@ -2,15 +2,17 @@ + Description=NFS server and services + Requires= network.target proc-fs-nfsd.mount rpcbind.target + Requires= nfs-mountd.service +-Wants=rpc-statd.service nfs-idmapd.service auth-rpcgss-module.service +-Wants=rpc-gssd.service gssproxy.service rpc-svcgssd.service ++Wants=rpc-statd.service nfs-idmapd.service + Wants=rpc-statd-notify.service + + After= network.target proc-fs-nfsd.mount rpcbind.target nfs-mountd.service + After= nfs-idmapd.service rpc-statd.service +-After= rpc-gssd.service gssproxy.service rpc-svcgssd.service + Before= rpc-statd-notify.service + ++# GSS services dependencies and ordering ++Wants=auth-rpcgss-module.service ++After=rpc-gssd.service gssproxy.service rpc-svcgssd.service ++ + Wants=nfs-config.service + After=nfs-config.service + +-- +2.1.1 + diff --git a/nfs-client.nfs.conf b/nfs-client.nfs.conf new file mode 100644 index 0000000..1be0e10 --- /dev/null +++ b/nfs-client.nfs.conf @@ -0,0 +1,4 @@ + +# When nfs is stopped or restarted, nfs-client must too. +[Unit] +PartOf=nfs-client.target diff --git a/nfs-config.restart.conf b/nfs-config.restart.conf new file mode 100644 index 0000000..728e578 --- /dev/null +++ b/nfs-config.restart.conf @@ -0,0 +1,4 @@ +[Unit] +# Ensure config file is re-processed when nfs or nfsserver +# is restarted +PartOf = nfs-server.service nfs-client.target diff --git a/nfs-server.nfsserver.conf b/nfs-server.nfsserver.conf new file mode 100644 index 0000000..575e110 --- /dev/null +++ b/nfs-server.nfsserver.conf @@ -0,0 +1,4 @@ + +# When nfsserver is stopped or restarted, nfs-server must too. +[Unit] +PartOf=nfsserver.service diff --git a/nfs-utils-1.0.7-bind-syntax.patch b/nfs-utils-1.0.7-bind-syntax.patch index ff5ac68..00c8344 100644 --- a/nfs-utils-1.0.7-bind-syntax.patch +++ b/nfs-utils-1.0.7-bind-syntax.patch @@ -6,9 +6,9 @@ support/nfs/exports.c | 2 ++ 1 file changed, 2 insertions(+) ---- nfs-utils-1.2.7.orig/support/nfs/exports.c -+++ nfs-utils-1.2.7/support/nfs/exports.c -@@ -628,6 +628,8 @@ bad_option: +--- nfs-utils-1.3.1.orig/support/nfs/exports.c ++++ nfs-utils-1.3.1/support/nfs/exports.c +@@ -649,6 +649,8 @@ bad_option: } else if (strncmp(opt, "replicas=", 9) == 0) { ep->e_fslocmethod = FSLOC_REPLICA; ep->e_fslocdata = strdup(opt+9); diff --git a/nfs-utils-1.3.0.tar.xz b/nfs-utils-1.3.0.tar.xz deleted file mode 100644 index 271cd08..0000000 --- a/nfs-utils-1.3.0.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ab8384d0e487ed6a18c5380d5df28015f7dd98680bf08f3247c97d9f7d99e56f -size 578960 diff --git a/nfs-utils-1.3.1.tar.xz b/nfs-utils-1.3.1.tar.xz new file mode 100644 index 0000000..7ede2f9 --- /dev/null +++ b/nfs-utils-1.3.1.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ff79d70b7b58b2c8f9b798c58721127e82bb96022adc04a5c4cb251630e696b8 +size 583124 diff --git a/nfs-utils.changes b/nfs-utils.changes index d186132..df02c12 100644 --- a/nfs-utils.changes +++ b/nfs-utils.changes @@ -1,3 +1,22 @@ +------------------------------------------------------------------- +Wed Nov 5 00:48:09 UTC 2014 - nfbrown@suse.com + +- new upstream nfs-utils-1.3.1 + This brings numerous fixes, particularly to gssd and + nfsdcltrack. It incorporates all the upstreamable + patches we had: +- Delete nfsdcltrack.sbin.patch +- Delete start-statd.patch +- 0001-nfs-client.target-Removed-a-ordering-cycle-with-nfs-.patch + 0002-Centralize-dependencies-on-the-auth-unit.patch + Patches from 1.3.2-rc, which look useful + +- Convert from /etc/init.d startup scripts to full + systemd integration. + The upstream standard names are "nfs-client" and "nfs-server" + rather than "nfs" and "nfsserver", so local "nfs" "nfsserver" + aliases are created and "rcXXX" links are provided for all 4. + ------------------------------------------------------------------- Thu Sep 4 02:55:22 UTC 2014 - nfbrown@suse.com diff --git a/nfs-utils.spec b/nfs-utils.spec index fb3a740..41d4190 100644 --- a/nfs-utils.spec +++ b/nfs-utils.spec @@ -41,30 +41,34 @@ Url: http://kernel.org/pub/linux/utils/nfs-utils/ Summary: Support Utilities for Kernel nfsd License: GPL-2.0+ Group: Productivity/Networking/NFS -Version: 1.3.0 +Version: 1.3.1 Release: 0 BuildRoot: %{_tmppath}/%{name}-%{version}-build -PreReq: %fillup_prereq %insserv_prereq +PreReq: %fillup_prereq %{?systemd_requires} BuildRoot: %{_tmppath}/%{name}-%{version}-build Source0: http://kernel.org/pub/linux/utils/nfs-utils/%{version}/nfs-utils-%{version}.tar.xz # Download does not work: # Source1: ftp://nfs.sourceforge.net/pub/nfs/nfs.doc.tar.bz2 Source1: nfs.doc.tar.bz2 -Source2: nfs.init -Source3: nfsserver.init Source4: sysconfig.nfs Source5: nfs-kernel-server.xml Source6: README.NFSv4 Source7: fw-client Source8: fw-server Source11: idmapd.conf +Source12: nfs-config.restart.conf Source13: nfs-utils.rpmlintrc +Source14: nfs-utils_env.sh +Source15: nfsserver.service +Source16: nfs.service +Source17: nfs-server.nfsserver.conf +Source18: nfs-client.nfs.conf Patch0: nfs-utils-1.0.7-bind-syntax.patch -# PATCH-FIX-UPSTREAM nfsdcltrack.sbin.patch nfbrown@suse.de -Patch1: nfsdcltrack.sbin.patch -# PATCH-FIX-OPENSUSE start-statd.patch nfbrown@suse.de -Patch2: start-statd.patch +# PATCH-FIX-UPSTREAM 0001-nfs-client.target-Removed-a-ordering-cycle-with-nfs-.patch nfbrown@suse.de +Patch1: 0001-nfs-client.target-Removed-a-ordering-cycle-with-nfs-.patch +# PATCH-FIX-UPSTREAM 0002-Centralize-dependencies-on-the-auth-unit.patch nfbrown@suse.de +Patch2: 0002-Centralize-dependencies-on-the-auth-unit.patch Suggests: python-base %description @@ -79,9 +83,8 @@ Obsoletes: nfs-utils < 1.1.0 Requires: keyutils Requires: netcfg Requires: rpcbind -PreReq: %fillup_prereq %insserv_prereq +PreReq: %fillup_prereq PreReq: permissions -Provides: aaa_base:/etc/init.d/nfs %description -n nfs-client This package contains common NFS utilities which are needed for client @@ -96,7 +99,7 @@ Conflicts: nfs-server Requires: netcfg Requires: nfs-client = %{version} Requires: rpcbind -PreReq: %fillup_prereq %insserv_prereq +PreReq: %fillup_prereq %description -n nfs-kernel-server This package contains support for the kernel based NFS server. You can @@ -144,17 +147,26 @@ done %install make install DESTDIR=$RPM_BUILD_ROOT install -d $RPM_BUILD_ROOT/%{_unitdir} -install -m 644 systemd/rpc-statd.service $RPM_BUILD_ROOT/%{_unitdir} -# rc-script -install -d $RPM_BUILD_ROOT/etc/init.d -install -m 744 %{SOURCE3} $RPM_BUILD_ROOT/etc/init.d/nfsserver -install -m 744 %{SOURCE2} $RPM_BUILD_ROOT/etc/init.d/nfs -ln -sf ../../etc/init.d/nfsserver $RPM_BUILD_ROOT/usr/sbin/rcnfsserver -ln -sf ../../etc/init.d/nfs $RPM_BUILD_ROOT/usr/sbin/rcnfs +install -m 644 systemd/*.{service,target,mount} $RPM_BUILD_ROOT/%{_unitdir} +install -m 644 %{S:15} $RPM_BUILD_ROOT%{_unitdir}/nfsserver.service +install -m 644 %{S:16} $RPM_BUILD_ROOT%{_unitdir}/nfs.service +install -d $RPM_BUILD_ROOT%{_unitdir}/nfs-server.service.d +install -m 644 %{S:17} $RPM_BUILD_ROOT%{_unitdir}/nfs-server.service.d/nfsserver.conf +install -d $RPM_BUILD_ROOT%{_unitdir}/nfs-client.target.d +install -m 644 %{S:18} $RPM_BUILD_ROOT%{_unitdir}/nfs-client.target.d/nfs.conf +install -d $RPM_BUILD_ROOT/usr/lib/systemd/scripts +install -m 755 %{S:14} $RPM_BUILD_ROOT/usr/lib/systemd/scripts/nfs-utils_env.sh +install -d $RPM_BUILD_ROOT%{_unitdir}/nfs-config.service.d +install -m 644 %{S:12} $RPM_BUILD_ROOT%{_unitdir}/nfs-config.service.d/restart.conf +ln -sf /sbin/service $RPM_BUILD_ROOT/usr/sbin/rcnfsserver +ln -sf /sbin/service $RPM_BUILD_ROOT/usr/sbin/rcnfs-server +ln -sf /sbin/service $RPM_BUILD_ROOT/usr/sbin/rcnfs +ln -sf /sbin/service $RPM_BUILD_ROOT/usr/sbin/rcnfs-client # sysconfig-data mkdir -p $RPM_BUILD_ROOT/var/adm/fillup-templates install -m 644 %{SOURCE4} $RPM_BUILD_ROOT/var/adm/fillup-templates # idmapd setup +install -d $RPM_BUILD_ROOT/etc install -m 644 %{S:11} $RPM_BUILD_ROOT/etc/idmapd.conf mkdir -p -m 755 $RPM_BUILD_ROOT/var/lib/nfs/rpc_pipefs mkdir -p -m 755 $RPM_BUILD_ROOT/var/lib/nfs/v4recovery @@ -192,7 +204,7 @@ if [ -f /var/lock/subsys/nfsserver-rpc.idmapd ]; then mv /var/lock/subsys/nfsserver-rpc.idmapd /run/nfs fi ### -%{fillup_and_insserv -n nfs nfs} +%{fillup_only -n nfs nfs} # %set_permissions /sbin/mount.nfs %service_add_post nfs @@ -203,7 +215,6 @@ fi %postun -n nfs-client %restart_on_update nfs -%insserv_cleanup %service_del_postun nfs %verifyscript -n nfs-client @@ -226,17 +237,14 @@ if [ -f /var/lock/subsys/nfsserver-rpc.idmapd ]; then mv /var/lock/subsys/nfsserver-rpc.idmapd /run/nfs fi ### -%{fillup_and_insserv nfsserver} %service_add_post nfsserver %postun -n nfs-kernel-server %restart_on_update nfsserver -%insserv_cleanup %service_del_postun nfsserver %files -n nfs-client %defattr(-,root,root) -%config /etc/init.d/nfs %config /etc/idmapd.conf %config /etc/nfsmount.conf %verify(not mode) %attr(0755,root,root) /sbin/mount.nfs @@ -249,6 +257,7 @@ fi /usr/sbin/nfsidmap /usr/sbin/nfsstat /usr/sbin/rcnfs +/usr/sbin/rcnfs-client /usr/sbin/rpc.gssd /usr/sbin/rpc.idmapd /usr/sbin/rpc.statd @@ -257,7 +266,25 @@ fi /usr/sbin/sm-notify /usr/sbin/start-statd /usr/sbin/blkmapd +%{_unitdir}/auth-rpcgss-module.service +%{_unitdir}/nfs-blkmap.service +%{_unitdir}/nfs-blkmap.target +%{_unitdir}/nfs-client.target +%{_unitdir}/nfs-config.service +%{_unitdir}/nfs-idmapd.service +%{_unitdir}/nfs-utils.service +%{_unitdir}/rpc-gssd.service +%{_unitdir}/rpc-statd-notify.service %{_unitdir}/rpc-statd.service +%{_unitdir}/rpc-svcgssd.service +%{_unitdir}/var-lib-nfs-rpc_pipefs.mount +%{_unitdir}/nfs.service +%dir %{_unitdir}/nfs-client.target.d +%{_unitdir}/nfs-client.target.d/nfs.conf +%dir %{_unitdir}/nfs-config.service.d +%{_unitdir}/nfs-config.service.d/restart.conf +%dir /usr/lib/systemd/scripts +/usr/lib/systemd/scripts/nfs-utils_env.sh %{_mandir}/man5/nfsmount.conf.5.gz %{_mandir}/man5/nfs.5.gz %{_mandir}/man8/mount.nfs.8.gz @@ -289,9 +316,15 @@ fi %files -n nfs-kernel-server %defattr(-,root,root) -%config /etc/init.d/nfsserver +%{_unitdir}/nfs-mountd.service +%{_unitdir}/nfs-server.service +%{_unitdir}/proc-fs-nfsd.mount +%{_unitdir}/nfsserver.service +%dir %{_unitdir}/nfs-server.service.d +%{_unitdir}/nfs-server.service.d/nfsserver.conf /usr/sbin/exportfs /usr/sbin/rcnfsserver +/usr/sbin/rcnfs-server /usr/sbin/rpc.mountd /usr/sbin/rpc.nfsd /usr/sbin/rpc.svcgssd diff --git a/nfs-utils_env.sh b/nfs-utils_env.sh new file mode 100644 index 0000000..37fba93 --- /dev/null +++ b/nfs-utils_env.sh @@ -0,0 +1,62 @@ +#!/bin/sh + +# extract configuration from /etc/sysconfig/nfs-utils and write +# environment to /run/sysconfig/nfs-utils to be used by systemd unit +# files. +# This script expects configuration as used by openSUSE-13.1 and later +# + +nfs_config=/etc/sysconfig/nfs +if test -r $nfs_config; then + . $nfs_config +fi + +pipefs= +if [ -n "$RPC_PIPEFS_DIR" -a "$RPC_PIPEFS_DIR" != "/var/lib/nfs/rpc_pipefs" ]; then + pipefs="-p /var/lib/nfs/rpc_pipefs" +fi + +mountdport= +if [ -n "$MOUNTD_PORT" ]; then + mountdport="-p $MOUNTD_PORT" +fi + +case $NFS_GSSD_AVOID_DNS in + [Nn]*) ignore_dns=-D ;; + [Yy]*) ignore_dns= ;; + * ) ignore_dns=-D +esac + +version_params= +if [ "$NFS3_SERVER_SUPPORT" == "no" ]; then + version_params="--no-nfs-version 2 --no-nfs-version 3" +fi +if [ "$NFS4_SUPPORT" != "yes" ]; then + version_params="--no-nfs-version 4" +fi +if [ "$NFS4_SERVER_MINOR_VERSION" != "0" ]; then + version_params="$VERSION_PARAMS --nfs-version 4 --nfs-version 4.$NFS4_SERVER_MINOR_VERSION" +fi + +if [ "$USE_KERNEL_NFSD_NUMBER" -gt 0 ]; then + threads=$USE_KERNEL_NFSD_NUMBER +else + threads=3 +fi + +case $NFS_GSSD_AVOID_DNS in + [Nn]*) ignore_dns=-D ;; + [Yy]*) ignore_dns= ;; + * ) ignore_dns=-D +esac + +mkdir -p /run/sysconfig +{ +echo "RPCIDMAPDARGS=$pipefs" +echo "RPCMOUNTDARGS=$mountdport $MOUNTD_OPTIONS $version_parms" +echo "RPCNFSDARGS=$NFSD_OPTIONS $version_params $threads" +echo "GSSDARGS=$ignore_dns $GSSD_OPTIONS $pipefs" +echo "SMNOTIFYARGS=$SM_NOTIFY_OPTIONS" +echo "STATDARGS=$STATD_OPTIONS" +echo "SVCGSSDARGS=$SVCGSSD_OPTIONS" +} > /run/sysconfig/nfs-utils diff --git a/nfs.init b/nfs.init deleted file mode 100644 index 190fadc..0000000 --- a/nfs.init +++ /dev/null @@ -1,399 +0,0 @@ -#! /bin/bash -# Copyright (c) 1996-2002 SuSE Linux AG, Nuernberg, Germany. -# Copyright (c) 2008 SuSE LINUX Products GmbH, Nuernberg, Germany. -# All rights reserved. -# -# Author: Florian La Roche, 1996 -# Werner Fink , 1996,2008 -# Burchard Steinbild, 1996 -# -# Please send feedback to http://www.suse.de/feedback -# -# /etc/init.d/nfs -# -### BEGIN INIT INFO -# Provides: nfs -# Required-Start: $network $portmap -# Required-Stop: $network $portmap -# Default-Start: 3 5 -# Default-Stop: 0 1 2 6 -# Short-Description: NFS client services -# Description: All necessary services for NFS clients -# X-Systemd-RemainAfterExit: true -### END INIT INFO - -. /etc/rc.status -. /etc/sysconfig/nfs - -# XXX: there should be separate init scripts for these really -IDMAPD_BIN=/usr/sbin/rpc.idmapd -GSSD_BIN=/usr/sbin/rpc.gssd -STATD_BIN=/usr/sbin/rpc.statd - -IDMAPD_CLIENT_STATE=/run/nfs/nfs-rpc.idmapd -IDMAPD_SERVER_STATE=/run/nfs/nfsserver-rpc.idmapd -GSSD_CLIENT_STATE=/run/nfs/nfs-rpc.gssd -GSSD_SERVER_STATE=/run/nfs/nfsserver-rpc.gssd - -if [ -z "$RPC_PIPEFS_DIR" ]; then - RPC_PIPEFS_DIR=/var/lib/nfs/rpc_pipefs -fi - -NEED_IDMAPD=no -#always start gssd, else kernel waits for it. -NEED_GSSD=yes -NEED_LDCONFIG=no -state=0 -usr="" -opt="" -mnt="" -nfs=$NFS_START_SERVICES -if [ "x$nfs" != "xyes" ] -then nfs=no -fi - -while read -r what where type options rest ; do - case "$what" in - \#*|"") continue ;; - esac - case ",$options," in - *,noauto,*) continue ;; - esac - case "$type" in - nfs|nfs4) ;; - *) continue ;; - esac - nfs=yes - if test "$1" = status ; then - grep -qF "$what $where nfs -$what/ $where nfs" /proc/mounts && continue - state=3 - continue - fi - case "$where" in - /usr*) - usr="${usr:+$usr }$where" - NEED_LDCONFIG=yes - ;; - /opt*) - opt="${opt:+$opt }$where" - NEED_LDCONFIG=yes - ;; - *) - mnt="${mnt:+$mnt }$where" - test "$NEED_LDCONFIG" = yes && continue - grep -qE "^$where" /etc/ld.so.conf || continue - NEED_LDCONFIG=yes - ;; - esac -done < /etc/fstab -unset what where type options rest - -case $NFS_SECURITY_GSS in - [Nn]*) flavors="";; - [Yy]*) flavors=krb5;; - *) flavors="$NFS_SECURITY_GSS";; -esac - -if test -n "$flavors" ; then - NEED_GSSD=yes -fi -if test -n "$GSSD_OPTIONS"; then - NEED_GSSD=yes -fi - -case $NFS_GSSD_AVOID_DNS in - [Nn]*) ignore_dns=-D ;; - [Yy]*) ignore_dns= ;; - * ) ignore_dns=-D -esac - -if test "$NFS4_SUPPORT" = yes ; then - NEED_IDMAPD=yes -fi -if grep -E '^(sunrpc|fs.nfs)' /etc/sysctl.conf > /dev/null 2>&1 ; then - nfs=yes -fi - -check_portmap() { - # check if either portmap or rpcbind is running - if test -x /sbin/rpcinfo && /sbin/rpcinfo -a 0.0.0.0.0.111 -T tcp 100000 > /dev/null 2>&1 - then true - elif test -x /sbin/portmap && checkproc /sbin/portmap - then true - elif test -x /sbin/rpcbind && checkproc /sbin/rpcbind - then true - else false - fi -} - -if ! test "$nfs" = no -o -x /sbin/portmap -o -x /sbin/rpcbind; then - echo "portmap/rpcbind is missing" - rc_failed 3 - rc_status -v - rc_exit -fi - -mount_rpc_pipefs() { - # See if the file system is there yet - case `stat -c "%t" -f "$RPC_PIPEFS_DIR"` in - *67596969*) - return 0;; - esac - mount -t rpc_pipefs rpc_pipefs "$RPC_PIPEFS_DIR" -} - -umount_rpc_pipefs() { - # See if the file system is there - case `stat -c "%t" -f "$RPC_PIPEFS_DIR"` in - *67596969*) - umount "$RPC_PIPEFS_DIR" - esac -} - -mount_usr() { - test -n "$usr" -o -n "$opt" || return - local where - for where in $usr $opt ; do - mount -o nolock $where || { - # maybe network device hasn't appeared yet. - udevadm settle - mount -o nolock $where - } - done -} - -do_start_gssd() { - for flavor in $flavors; do - /sbin/modprobe rpcsec_gss_$flavor - done - mount_rpc_pipefs - startproc $GSSD_BIN $ignore_dns $GSSD_OPTIONS -p $RPC_PIPEFS_DIR - return $? -} - -do_start_idmapd() { - mount_rpc_pipefs - - # as idmapd needs to be run by server and client - # check if there is already a idmapd running - if checkproc $IDMAPD_BIN && test -f $IDMAPD_SERVER_STATE; then - killproc -HUP $IDMAPD_BIN - else - startproc $IDMAPD_BIN -p $RPC_PIPEFS_DIR - return $? - fi -} - -rc_reset -case "$1-$nfs" in - start-no|reload-no) - # Always run smnotify, even if no mounts are listed in fstab. - # If there is nothing to do, it will exit quickly, and if there - # is something to do, the sooner it is done, the better. - /usr/sbin/sm-notify $SM_NOTIFY_OPTIONS - echo -n "Not starting NFS client services - no NFS found in /etc/fstab:" - rc_status -u - ;; - start-yes|force-start-*) - echo -n "Starting NFS client services:" - if ! check_portmap ; then - echo "portmap/rpcbind is not running" - rc_failed 3 - rc_status -v - rc_exit - fi - - # explicit modprobe so we can set some sysctl values - # before any daemons (e.g. lockd) start. - # When modprobe allows this to be moved to modprobe.d - # without breaking --show-depends, this can be removed. - modprobe nfs - grep -E '^(sunrpc|fs.nfs)' /etc/sysctl.conf | sysctl -q -e -n -p - - - # in case we need /usr and/or /opt via nfs - mount_usr - - # sm-notify - echo -n " sm-notify" - /usr/sbin/sm-notify $SM_NOTIFY_OPTIONS - - # start gssd - if test "$NEED_GSSD" = yes ; then - echo -n " gssd" - do_start_gssd || { - rc_status -v - rc_exit - } - [ -d /run/nfs ] || mkdir /run/nfs - echo $GSSD_BIN > $GSSD_CLIENT_STATE - fi - - # start idmapd - if test "$NEED_IDMAPD" = yes ; then - echo -n " idmapd" - do_start_idmapd || { - rc_status -v - rc_exit - } - [ -d /run/nfs ] || mkdir /run/nfs - echo $IDMAPD_BIN > $IDMAPD_CLIENT_STATE - fi - - rc_status -v - # remark: statd is started when needed by mount.nfs - - # Mount all auto NFS devices (-> nfs(5) and mount(8) ) - # NFS-Server sometime not reachable during boot phase. - # It's sometime usefull to mount NFS devices in - # background with an ampersand (&) and a sleep time of - # two or more seconds, e.g: - # - # sleep 2 && mount -at nfs,nfs4 & - # sleep 2 - # - if test -n "$mnt" ; then - # If network devices are not yet discovered, mounts - # might fail, so we might need to 'udevadm settle' to - # wait for the interfaces. - # We cannot try the mount and on failure: 'settle' and try again - # as if there are 'bg' mounts, we could get multiple copies - # of them. So always 'settle' if there is any mounting to do. - echo -n "Mounting network file systems ..." - udevadm settle - mount -at nfs,nfs4 || rc_failed 1 - rc_status -v - fi - # - # generate new list of available shared libraries - # - if test "$NEED_LDCONFIG" = yes; then - if test -x /sbin/ldconfig; then - /sbin/ldconfig -X > /dev/null 2>&1 || : - fi - fi - # - ;; - stop* ) - echo -n "Shutting down NFS client services:" - - rootfs=`awk '$2 == "/" && $1 != "rootfs" {print $3}' /proc/mounts` - - if test x$rootfs = xnfs ; then - echo -n " root filesystem is on NFS" - rc_status -s - else - # kill process to maximise chance that umount succeeds - mnt=`awk '$3 ~ /^nfs4*$/ {print $2}' /proc/mounts` - runlevel=`runlevel | awk '{print $2}'` - if test "$runlevel" -eq 0 -o "$runlevel" -eq 6; then - if test -n "$mnt" ; then - /sbin/mkill -TERM $mnt - fi - fi - - # if filesystems are not busy, wait for unmount to complete.. - umount -at nfs,nfs4 - # if they are still busy, do a lazy unmount anyway. - umount -alt nfs,nfs4 - - # stop gssd - if test ! -f $GSSD_SERVER_STATE ; then - if checkproc $GSSD_BIN; then - echo -n " gssd" - killproc $GSSD_BIN - fi - rm -f $GSSD_CLIENT_STATE - fi - - # stop idmapd - if test -f $IDMAPD_CLIENT_STATE; then - # only stop idmapd if it is not needed by server - if test ! -f $IDMAPD_SERVER_STATE ; then - echo -n " idmapd" - killproc $IDMAPD_BIN - fi - rm -f $IDMAPD_CLIENT_STATE - fi - - # stop rpc.statd if not needed by server - if checkproc $STATD_BIN ; then - if [ `cat /proc/fs/nfsd/threads 2> /dev/null`0 -eq 0 ]; then - echo -n " rpc.statd" - killproc $STATD_BIN - fi - fi - - # umount rpc_pipefs only if not needed by server - if [ ! -f $GSSD_SERVER_STATE -a ! -f $IDMAPD_SERVER_STATE ]; then - umount_rpc_pipefs - fi - - rc_status -v - fi - ;; - reload*|force-reload*) - # only IDMAP has any sense in which 'reload' makes sense. - if checkproc $IDMAPD_BIN; then - killproc -HUP $IDMAPD_BIN - fi - rc_status - ;; - restart*) - ## Stop the service and regardless of whether it was - ## running or not, start it again. - $0 stop - $0 force-start - rc_status - ;; - status*) - echo -n "Checking for mounted nfs shares (from /etc/fstab):" - if test "$nfs" = yes ; then - rc_failed $state - else - rc_failed 3 - fi - # - if test "$NEED_GSSD" = yes && ! checkproc $GSSD_BIN; then - echo "gssd not running" - rc_failed 3 - fi - # - if test "$NEED_IDMAPD" = yes && ! checkproc $IDMAPD_BIN; then - echo "idmapd not running" - rc_failed 3 - fi - if ! check_portmap; then - echo "Warning: portmap/rpcbind not running - nfs may not work well" - fi - rc_status -v - ;; - try-restart*|condrestart*) - # This restart is not only conditional on the services already - # running, but is also gentler in that NFS filesystems are - # not unmounted or remounted. - # It is possible that the programs have been reinstalled so - # we pass a basename rather than a full path to checkproc and killproc - echo -n "Restarting NFS services:" - if checkproc ${GSSD_BIN##*/}; then - echo -n " gssd" - killproc ${GSSD_BIN##*/} - startproc $GSSD_BIN $ignore_dns $GSSD_OPTIONS - fi - if checkproc ${IDMAPD_BIN##*/}; then - echo -n " idmapd" - killproc ${IDMAPD_BIN##*/} - startproc $IDMAPD_BIN - fi - if checkproc ${STATD_BIN##*/}; then - echo -n " statd" - killproc ${STATD_BIN##*/} - /usr/sbin/start-statd - fi - rc_status -v - ;; - *) - echo "Usage: $0 {start|stop|status|reload|force-reload|restart|try-restart}" - exit 1 -esac -rc_exit diff --git a/nfs.service b/nfs.service new file mode 100644 index 0000000..efd25c0 --- /dev/null +++ b/nfs.service @@ -0,0 +1,22 @@ +[Unit] +Description=Alias for NFS client +# The systemd alias mechanism (using symlinks) isn't rich enough. +# If you "systemctl enable" an alias, it doesn't enable the +# target. +# This service file creates a sufficiently rich alias for nfs-client +# (which is the canonical upstream name) +# "start", "stop", "restart", "reload" on this will do the same to nfs-client. +# "enable" on this will only enable this service, but when it starts, that +# starts nfs-client, so it is effectively enabled. +# nfs-server.d/nfsserver.conf is part of this service. + +Requires= nfs-client.target +PropagatesReloadTo=nfs-client.target + +[Service] +Type=oneshot +ExecStart=/bin/true + +[Install] +WantedBy=multi-user.target + diff --git a/nfsdcltrack.sbin.patch b/nfsdcltrack.sbin.patch deleted file mode 100644 index 11fab42..0000000 --- a/nfsdcltrack.sbin.patch +++ /dev/null @@ -1,16 +0,0 @@ ---- - utils/nfsdcltrack/Makefile.am | 4 ++++ - 1 file changed, 4 insertions(+) - ---- nfs-utils-1.2.8.orig/utils/nfsdcltrack/Makefile.am -+++ nfs-utils-1.2.8/utils/nfsdcltrack/Makefile.am -@@ -1,5 +1,9 @@ - ## Process this file with automake to produce Makefile.in - -+# These binaries go in /sbin (not /usr/sbin), and that cannot be -+# overridden at config time. The kernel "knows" the /sbin name. -+sbindir = /sbin -+ - man8_MANS = nfsdcltrack.man - EXTRA_DIST = $(man8_MANS) - diff --git a/nfsserver.init b/nfsserver.init deleted file mode 100644 index 5308ad9..0000000 --- a/nfsserver.init +++ /dev/null @@ -1,416 +0,0 @@ -#! /bin/sh -# Copyright (c) 1996 - 2007 SuSE GmbH Nuernberg, Germany. All rights reserved. -# -# Author: Florian La Roche , 1996 -# Werner Fink , 1996,98 -# Burchard Steinbild , 1997 -# Thorsten Kukuk , 2000,01 -# -# /etc/init.d/nfsserver -# -### BEGIN INIT INFO -# Provides: nfsserver -# Required-Start: $network $named $portmap -# Required-Stop: $network $portmap -# Should-Start: ypbind krb5kdc -# Should-Stop: ypbind krb5kdc -# Default-Start: 3 5 -# Default-Stop: 0 1 2 6 -# Short-Description: Start the kernel based NFS daemon -# X-Systemd-RemainAfterExit: true -### END INIT INFO - -. /etc/sysconfig/nfs - -# Shell functions sourced from /etc/rc.status: -# rc_check check and set local and overall rc status -# rc_status check and set local and overall rc status -# rc_status -v ditto but be verbose in local rc status -# rc_status -v -r ditto and clear the local rc status -# rc_failed set local and overall rc status to failed -# rc_failed set local and overall rc status to -# rc_reset clear local rc status (overall remains) -# rc_exit exit appropriate to overall rc status -. /etc/rc.status - -# First reset status of this service -rc_reset - -# Return values acc. to LSB for all commands but status: -# 0 - success -# 1 - generic or unspecified error -# 2 - invalid or excess argument(s) -# 3 - unimplemented feature (e.g. "reload") -# 4 - insufficient privilege -# 5 - program is not installed -# 6 - program is not configured -# 7 - program is not running -# -# Note that starting an already running service, stopping -# or restarting a not-running service as well as the restart -# with force-reload (in case signalling is not supported) are -# considered a success. - -# XXX: there should be separate init scripts for these really -SVCGSSD_BIN=/usr/sbin/rpc.svcgssd -GSSD_BIN=/usr/sbin/rpc.gssd -IDMAPD_BIN=/usr/sbin/rpc.idmapd -NFSD_BIN=/usr/sbin/rpc.nfsd - -IDMAPD_CLIENT_STATE=/run/nfs/nfs-rpc.idmapd -IDMAPD_SERVER_STATE=/run/nfs/nfsserver-rpc.idmapd -NFSD_BIND_MOUNTS=/run/nfs/bind.mounts -GSSD_CLIENT_STATE=/run/nfs/nfs-rpc.gssd -GSSD_SERVER_STATE=/run/nfs/nfsserver-rpc.gssd - -NEED_SVCGSSD=no -NEED_IDMPAPD=no - -case `uname -r` in - 0.*|1.*|2.0.*) exit 3 -esac - -case $NFS_SECURITY_GSS in - [Nn]*) flavors="";; - [Yy]*) flavors=krb5;; - *) flavors="$NFS_SECURITY_GSS";; -esac - -if [ "$flavors" ]; then - NEED_SVCGSSD=yes -fi - -if [ "$NFS4_SUPPORT" = yes ]; then - NEED_IDMAPD=yes -fi - -if [ -z "$RPC_PIPEFS_DIR" ]; then - RPC_PIPEFS_DIR=/var/lib/nfs/rpc_pipefs -fi - -case "$NFS4_SERVER_MINOR_VERSION" in - [0123456789] ) ;; - * ) NFS4_SERVER_MINOR_VERSION=0 -esac - -if [ -n "$NFSV4LEASETIME" ] ; then - # Documentation inconsistency. - NFSV4LEASETIME=$NFSD_V4_GRACE -fi - -check_for_nfsdfs() { - HAVE_NFSDFS="no" - while read dummy type ; do - if [ "$type" = "nfsd" ] ; then - HAVE_NFSDFS="yes" - fi - done < /proc/filesystems -} - -nfs4_bind_mounts() { - [ -d /run/nfs ] || mkdir /run/nfs - warned=no - # In case of doubt, try "man sed" :-) - cat /etc/exports | - sed -n 'H;g;s/\\$//;h;t;s/^\n//;s/\n[[:space:]]*//g;s/#.*//;p;s/.*//;h' | - sed 's/^\([^[:space:]]*\).*bind=\([^,)]*\).*/\1 \2/;t;d' | - sort | - while read export dir; do - if [ $warned = no ] ; then - echo - echo "NFS: The usage of 'bind=' in /etc/exports is deprecated." - echo "NFS: Is it no longer needed and may cease to work." - echo "NFS: Please remove these settings." - warned=yes - fi >&2 - test -d "$export" || mkdir -p "$export" - mount -o bind "$dir" "$export" - echo "$dir" "$export" - done > $NFSD_BIND_MOUNTS -} - -nfs4_unbind_mounts() { - sort -r -k2 $NFSD_BIND_MOUNTS | - while read src mountpoint crap; do - [ -n "$mountpoint" ] && umount -l "$mountpoint" - done - > $NFSD_BIND_MOUNTS -} - -mount_rpc_pipefs() { - - # See if the file system is there yet - case `stat -c "%t" -f "$RPC_PIPEFS_DIR"` in - *67596969*) - return 0;; - esac - - mount -t rpc_pipefs rpc_pipefs "$RPC_PIPEFS_DIR" -} - -umount_rpc_pipefs() { - - case `stat -c "%t" -f "$RPC_PIPEFS_DIR"` in - *67596969*) - umount "$RPC_PIPEFS_DIR";; - esac -} - -do_start_svcgssd() { - for flavor in $flavors; do - /sbin/modprobe rpcsec_gss_$flavor - done - - mount_rpc_pipefs - startproc $SVCGSSD_BIN $SVCGSSD_OPTIONS - return $? -} - -do_start_gssd() { - if ! checkproc $GSSD_BIN; then - case $NFS_GSSD_AVOID_DNS in - [Nn]*) ignore_dns=-D ;; - [Yy]*) ignore_dns= ;; - * ) ignore_dns=-D - esac - mount_rpc_pipefs - startproc $GSSD_BIN $ignore_dns $GSSD_OPTIONS -p $RPC_PIPEFS_DIR - return $? - fi -} - -do_start_idmapd() { - mount_rpc_pipefs - - if checkproc $IDMAPD_BIN && test -f $IDMAPD_CLIENT_STATE; then - killproc -HUP $IDMAPD_BIN - else - startproc $IDMAPD_BIN -p $RPC_PIPEFS_DIR - return $? - fi -} - -case "$1" in - start) - PARAMS=3 - test "$USE_KERNEL_NFSD_NUMBER" -gt 0 && PARAMS="$USE_KERNEL_NFSD_NUMBER" - - echo -n "Starting kernel based NFS server:" - modprobe nfsd - - # this can be removed when modprobe allows the sysctl to be - # moved to modprobe.d without breaking --show-depends - grep '^fs.nfs.n[sl]m' /etc/sysctl.conf | sysctl -q -e -n -p - - - # mount nfsd filesystem - check_for_nfsdfs - if [ "$HAVE_NFSDFS" = "yes" -a ! -f /proc/fs/nfsd/exports ] ; then - mount -t nfsd nfsd /proc/fs/nfsd - rc_status - fi - VERSION_PARAMS= - if [ "$NFS3_SERVER_SUPPORT" == "no" ]; then - VERSION_PARAMS="--no-nfs-version 2 --no-nfs-version 3" - fi - if [ "$NFS4_SUPPORT" != "yes" ]; then - VERSION_PARAMS="--no-nfs-version 4" - fi - if [ "$NFS4_SERVER_MINOR_VERSION" != "0" ]; then - VERSION_PARAMS="$VERSION_PARAMS --nfs-version 4 --nfs-version 4.$NFS4_SERVER_MINOR_VERSION" - fi - for fl in /proc/fs/nfsd/nfsv4leasetime /proc/fs/nfsd/nfsv4gracetime /proc/sys/fs/nfs/nlm_grace_period - do - if [ -n "$NFSV4LEASETIME" -a -f $fl ]; then - echo "$NFSV4LEASETIME" > $fl - fi - done - - nfs4_bind_mounts - # svcgssd; gssd; idmapd - if [ "$NEED_SVCGSSD" = yes ]; then - echo -n " svcgssd" - do_start_svcgssd || { - rc_status -v - rc_exit - } - echo -n " gssd" - do_start_gssd || { - rc_status -v - rc_exit - } - [ -d /run/nfs ] || mkdir /run/nfs - echo $GSSD_BIN > $GSSD_SERVER_STATE - fi - if [ "$NEED_IDMAPD" = yes ]; then - echo -n " idmapd" - do_start_idmapd || { - rc_status -v - rc_exit - } - [ -d /run/nfs ] || mkdir /run/nfs - echo $IDMAPD_BIN > $IDMAPD_SERVER_STATE - fi - # exportfs - /usr/sbin/exportfs -r - # rpc.mountd - echo -n " mountd" - if [ -n "$MOUNTD_PORT" ] ; then - startproc /usr/sbin/rpc.mountd -p $MOUNTD_PORT $MOUNTD_OPTIONS $VERSION_PARAMS - else - startproc /usr/sbin/rpc.mountd $MOUNTD_OPTIONS $VERSION_PARAMS - fi || { - rc_status -v - rc_exit - } - # rpc.statd - if [ "$NFS3_SERVER_SUPPORT" != "no" ]; then - echo -n " statd" - startproc /usr/sbin/rpc.statd --no-notify $STATD_OPTIONS || { - rc_status -v - rc_exit - } - fi - # rpc.nfsd - echo -n " nfsd" - $NFSD_BIN $NFSD_OPTIONS $PARAMS $VERSION_PARAMS || { - rc_status -v - rc_exit - } - # sm-notify needs to be run last - echo -n " sm-notify" - /usr/sbin/sm-notify $SM_NOTIFY_OPTIONS - # - rc_status -v - ;; - stop) - echo -n "Shutting down kernel based NFS server:" - # rpc.nfsd - echo -n " nfsd" - killproc -n -KILL nfsd || { - rc_status -v - rc_exit - } - # rpc.statd - if ! checkproc -n lockd; then - echo -n " statd" - killproc rpc.statd - else - # tell lockd to drop all client locks - killproc -n -KILL lockd - fi - # make sure sm-notify is run on restart, as we have dropped some locks - rm -f /run/sm-notify.pid - # - # rpc.mountd - echo -n " mountd" - killproc -TERM /usr/sbin/rpc.mountd || { - rc_status -v - rc_exit - } - # svcgssd - if [ "$NEED_SVCGSSD" = yes ]; then - echo -n " svcgssd" - killproc $SVCGSSD_BIN || { - rc_status -v - rc_exit - } - # kill only if not needed by client anymore - if [ ! -f $GSSD_CLIENT_STATE ]; then - echo -n " gssd" - killproc $GSSD_BIN || { - rc_status -v - rc_exit - } - fi - rm -f $GSSD_SERVER_STATE - fi - # idmap - if [ "$NEED_IDMAPD" = yes ]; then - # kill only if not needed by client anymore - if [ ! -f $IDMAPD_CLIENT_STATE ]; then - echo -n " idmapd" - killproc $IDMAPD_BIN - fi - rm -f $IDMAPD_SERVER_STATE - fi - # umount rpc_pipefs only if not needed by client - if [ ! -f $GSSD_CLIENT_STATE -a ! -f $IDMAPD_CLIENT_STATE ] ; then - umount_rpc_pipefs - fi - # umount nfsd fs - check_for_nfsdfs - if [ "$HAVE_NFSDFS" = "yes" -a -f /proc/fs/nfsd/exports ] ; then - umount /proc/fs/nfsd - rc_status - fi - nfs4_unbind_mounts - # - rc_status -v - ;; - try-restart) - ## Stop the service and if this succeeds (i.e. the - ## service was running before), start it again. - $0 status >/dev/null && $0 restart - - # Remember status and be quiet - rc_status - ;; - restart) - ## Stop the service and regardless of whether it was - ## running or not, start it again. - $0 stop - $0 start - - # Remember status and be quiet - rc_status - ;; - reload|force-reload) - echo -n "Reload kernel based NFS server" - # Unfortunately, there's no sane way of doing this: - nfs4_unbind_mounts; nfs4_bind_mounts - /usr/sbin/exportfs -r - rc_status -v - ;; - status) - echo -n "Checking for kernel based NFS server:" - ## Check status with checkproc(8), if process is running - ## checkproc will return with exit status 0. - - # Status has a slightly different for the status command: - # 0 - service running - # 1 - service dead, but /run/ pid file exists - # 2 - service dead, but /var/lock/ lock file exists - # 3 - service not running - - # NOTE: checkproc returns LSB compliant status values. - if [ "$NEED_SVCGSSD" = yes ]; then - echo -n " svcgssd" - checkproc $SVCGSSD_BIN - rc_status -v - echo -n " gssd" - checkproc $GSSD_BIN - rc_status -v - fi - if [ "$NEED_IDMAPD" = yes ]; then - echo -n " idmapd" - checkproc $IDMAPD_BIN - rc_status -v - fi - echo -n " mountd" - checkproc /usr/sbin/rpc.mountd - rc_status -v - echo -n " statd" - checkproc /usr/sbin/rpc.statd - rc_status -v - echo -n " nfsd" - checkproc -n nfsd - rc_status -v - - ;; - *) - echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload}" - exit 1 - ;; -esac - -rc_exit diff --git a/nfsserver.service b/nfsserver.service new file mode 100644 index 0000000..67905fc --- /dev/null +++ b/nfsserver.service @@ -0,0 +1,23 @@ +[Unit] +Description=Alias for NFS server +# The systemd alias mechanism (using symlinks) isn't rich enough. +# If you "systemctl enable" an alias, it doesn't enable the +# target. +# This service file creates a sufficiently rich alias for nfs-server +# (which is the canonical upstream name) +# "start", "stop", "restart", "reload" on this will do the same to nfs-server. +# "enable" on this will only enable this service, but when it starts, that +# starts nfs-server, so it is effectively enabled. +# nfs-server.d/nfsserver.conf is part of this service. + +Requires= nfs-server.service +PropagatesReloadTo=nfs-server.service + +[Service] +Type=oneshot +ExecStart=/bin/true +RemainAfterExit=yes + +[Install] +WantedBy=multi-user.target + diff --git a/start-statd.patch b/start-statd.patch deleted file mode 100644 index 0b2b794..0000000 --- a/start-statd.patch +++ /dev/null @@ -1,20 +0,0 @@ -1/ use correct patch for systemctl -2/ use correct name for rpc-statd.service - ---- - utils/statd/start-statd | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - ---- nfs-utils-1.3.0.orig/utils/statd/start-statd -+++ nfs-utils-1.3.0/utils/statd/start-statd -@@ -4,8 +4,8 @@ - # /var/run/rpc.statd.pid). - # It should run statd with whatever flags are apropriate for this - # site. --PATH=/sbin:/usr/sbin --if systemctl start statd.service -+PATH=/bin:/usr/bin:/sbin:/usr/sbin -+if systemctl start rpc-statd.service - then : - else - exec rpc.statd --no-notify