Accepting request 397797 from Base:System
- 0001-systemd-Decouple-the-starting-and-stopping-of-rpcbin.patch 0002-systemd-unit-files-fix-up-dependencies-on-rpcbind.patch Fix systemd dependencies to ensure rpcbind is started when needed. (bsc#975265) OBS-URL: https://build.opensuse.org/request/show/397797 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/nfs-utils?expand=0&rev=134
This commit is contained in:
commit
b14cb124c7
@ -0,0 +1,49 @@
|
||||
From 4fabfcd082069a16ea8769b9ea9344fc15011366 Mon Sep 17 00:00:00 2001
|
||||
From: Steve Dickson <steved@redhat.com>
|
||||
Date: Mon, 9 Nov 2015 11:28:30 -0500
|
||||
Subject: [PATCH] systemd: Decouple the starting and stopping of
|
||||
rpcbind/nfs-server
|
||||
|
||||
Commit b98f2af15 introduced a regression that cause the
|
||||
starting and stop of rpcbind and the nfs-server to
|
||||
be depended on each other
|
||||
|
||||
The starting of the NFS server should start rpcbind
|
||||
but bring rpcbind down should not bring the NFS
|
||||
server down.
|
||||
|
||||
Signed-off-by: Steve Dickson <steved@redhat.com>
|
||||
---
|
||||
systemd/nfs-server.service | 2 +-
|
||||
systemd/rpc-statd.service | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/systemd/nfs-server.service b/systemd/nfs-server.service
|
||||
index 12b02f26f9ce..317e5d689767 100644
|
||||
--- a/systemd/nfs-server.service
|
||||
+++ b/systemd/nfs-server.service
|
||||
@@ -1,7 +1,7 @@
|
||||
[Unit]
|
||||
Description=NFS server and services
|
||||
DefaultDependencies=no
|
||||
-Requires= network.target proc-fs-nfsd.mount rpcbind.service
|
||||
+Requires= network.target proc-fs-nfsd.mount rpcbind.target
|
||||
Requires= nfs-mountd.service
|
||||
Wants=rpc-statd.service nfs-idmapd.service
|
||||
Wants=rpc-statd-notify.service
|
||||
diff --git a/systemd/rpc-statd.service b/systemd/rpc-statd.service
|
||||
index 14604d783ddf..f16ea425dc77 100644
|
||||
--- a/systemd/rpc-statd.service
|
||||
+++ b/systemd/rpc-statd.service
|
||||
@@ -3,7 +3,7 @@ Description=NFS status monitor for NFSv2/3 locking.
|
||||
DefaultDependencies=no
|
||||
Conflicts=umount.target
|
||||
Requires=nss-lookup.target rpcbind.target
|
||||
-After=network.target nss-lookup.target rpcbind.target
|
||||
+After=network.target nss-lookup.target rpcbind.service
|
||||
|
||||
PartOf=nfs-utils.service
|
||||
|
||||
--
|
||||
2.8.2
|
||||
|
131
0002-systemd-unit-files-fix-up-dependencies-on-rpcbind.patch
Normal file
131
0002-systemd-unit-files-fix-up-dependencies-on-rpcbind.patch
Normal file
@ -0,0 +1,131 @@
|
||||
From 91da135f243d6f87fcea8b8a3ce28a589917b0e4 Mon Sep 17 00:00:00 2001
|
||||
From: NeilBrown <neilb@suse.com>
|
||||
Date: Mon, 2 May 2016 08:54:13 -0400
|
||||
Subject: [PATCH] systemd unit files: fix up dependencies on rpcbind.
|
||||
|
||||
The dependencies on rpcbind have been changed a few times and I think
|
||||
they are still wrong. So I'll go into some detail to justify this
|
||||
change.
|
||||
|
||||
Firstly: rpcbind.target rpcbind.socket or rpcbind.service?
|
||||
|
||||
The systemd documentation talks about targets as "synchronization
|
||||
points" and likens them to SysV init run levels. Run levels are about
|
||||
ordering but not dependencies.
|
||||
|
||||
The systemd.special man page describes rpcbind.target as intended
|
||||
explicitly for ordering sysvinit scripts, with "After=" dependencies.
|
||||
|
||||
So while I think it is valid to use rpcbind.target for ordering
|
||||
(before/after) it shouldn't be used for dependencies (Wants/Requires).
|
||||
The rpcbind.target file included in systemd does not "Require" the
|
||||
actual service, so requiring rpcbind.target itself is pointless.
|
||||
|
||||
I think we shouldn't use rpcbind.target at all. Leave it for sysvinit
|
||||
synchronization.
|
||||
|
||||
So: .socket or .service?
|
||||
|
||||
I think nfs only needs the socket to be active. On first connection
|
||||
the service will be started. But nfs does not need to wait for the
|
||||
service to start, only the socket. So I think we should exclusively
|
||||
use rpcbind.socket.
|
||||
|
||||
Next: Wants or Requires.
|
||||
|
||||
rpc.statd definitely Requires rpcbind. It needs to register to be
|
||||
useful, and without rpcbind it cannot register.
|
||||
|
||||
nfs-server does not necesarily require rpcbind. Specifically if
|
||||
configured for NFSv4 only, nfs-server will work quite happily without
|
||||
rpcbind.
|
||||
|
||||
Someone with an NFSv4 only setup who wants rpcbind to not run can use
|
||||
systemctl mask rpcbind.socket
|
||||
to ensure it never runs.
|
||||
So nfs-server should only "Wants: rpcbind.socket".
|
||||
I think
|
||||
Commit: 4fabfcd08206 ("systemd: Decouple the starting and stopping of
|
||||
rpcbind/nfs-server")
|
||||
should have changed "Requires" to "Wants" rather than "server" to
|
||||
"target"
|
||||
to fix the dependency problem.
|
||||
|
||||
Finally: After?
|
||||
|
||||
It only makes sense to declare an ordering relation as "After:"
|
||||
something that will actually be started. If "foo.service" is not part
|
||||
of the systemd transaction, then "After: foo.service" has no effect.
|
||||
So having:
|
||||
Requires: rpcbind.target
|
||||
After: rpcbind.socket
|
||||
|
||||
doesn't make much sense unless there is some relationship between
|
||||
rpcbind.target and rpcbind.socket, and there is no general guarantee
|
||||
of that (though what individual distros do, I don't know).
|
||||
So the "After" should match the "Wants" or "Requires".
|
||||
|
||||
It might make sense to
|
||||
Requires: rpcbind.socket
|
||||
After: rpcbind.target
|
||||
|
||||
as it is reasonable to assume that rpcbind.target will be ordered with
|
||||
rpcbind.socket, but as we can use rpcbind.socket explictly, that is
|
||||
clearer.
|
||||
|
||||
So my conclusion is that nfs-server should:
|
||||
Wants: rpcbind.socket
|
||||
After: rpcbind.socket
|
||||
|
||||
and rpc-statd should
|
||||
Requires: rpcbind.socket
|
||||
After: rpcbind.socket
|
||||
|
||||
which is what this patch puts into effect.
|
||||
|
||||
Signed-off-by: NeilBrown <neilb@suse.com>
|
||||
Signed-off-by: Steve Dickson <steved@redhat.com>
|
||||
---
|
||||
systemd/nfs-server.service | 5 +++--
|
||||
systemd/rpc-statd.service | 4 ++--
|
||||
2 files changed, 5 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/systemd/nfs-server.service b/systemd/nfs-server.service
|
||||
index 317e5d689767..2ccdc6344cd5 100644
|
||||
--- a/systemd/nfs-server.service
|
||||
+++ b/systemd/nfs-server.service
|
||||
@@ -1,13 +1,14 @@
|
||||
[Unit]
|
||||
Description=NFS server and services
|
||||
DefaultDependencies=no
|
||||
-Requires= network.target proc-fs-nfsd.mount rpcbind.target
|
||||
+Requires= network.target proc-fs-nfsd.mount
|
||||
Requires= nfs-mountd.service
|
||||
+Wants=rpcbind.socket
|
||||
Wants=rpc-statd.service nfs-idmapd.service
|
||||
Wants=rpc-statd-notify.service
|
||||
|
||||
After= local-fs.target
|
||||
-After= network.target proc-fs-nfsd.mount rpcbind.service nfs-mountd.service
|
||||
+After= network.target proc-fs-nfsd.mount rpcbind.socket nfs-mountd.service
|
||||
After= nfs-idmapd.service rpc-statd.service
|
||||
Before= rpc-statd-notify.service
|
||||
|
||||
diff --git a/systemd/rpc-statd.service b/systemd/rpc-statd.service
|
||||
index f16ea425dc77..a02f5c41a424 100644
|
||||
--- a/systemd/rpc-statd.service
|
||||
+++ b/systemd/rpc-statd.service
|
||||
@@ -2,8 +2,8 @@
|
||||
Description=NFS status monitor for NFSv2/3 locking.
|
||||
DefaultDependencies=no
|
||||
Conflicts=umount.target
|
||||
-Requires=nss-lookup.target rpcbind.target
|
||||
-After=network.target nss-lookup.target rpcbind.service
|
||||
+Requires=nss-lookup.target rpcbind.socket
|
||||
+After=network.target nss-lookup.target rpcbind.socket
|
||||
|
||||
PartOf=nfs-utils.service
|
||||
|
||||
--
|
||||
2.8.2
|
||||
|
@ -1,3 +1,11 @@
|
||||
-------------------------------------------------------------------
|
||||
Tue May 24 22:27:14 UTC 2016 - nfbrown@suse.com
|
||||
|
||||
- 0001-systemd-Decouple-the-starting-and-stopping-of-rpcbin.patch
|
||||
0002-systemd-unit-files-fix-up-dependencies-on-rpcbind.patch
|
||||
Fix systemd dependencies to ensure rpcbind is started when needed.
|
||||
(bsc#975265)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Apr 21 23:40:59 UTC 2016 - neilb@suse.com
|
||||
|
||||
|
@ -66,6 +66,8 @@ Patch4: 0001-mount.nfs-hide-EBUSY-errors.patch
|
||||
Patch5: 0001-close-the-syslog-fd-in-daemon_init.patch
|
||||
Patch6: 0001-mount.nfs-trust-the-exit-status-of-start_statd.patch
|
||||
Patch7: 0001-mount-run-START_STATD-fully-as-root.patch
|
||||
Patch8: 0001-systemd-Decouple-the-starting-and-stopping-of-rpcbin.patch
|
||||
Patch9: 0002-systemd-unit-files-fix-up-dependencies-on-rpcbind.patch
|
||||
|
||||
Suggests: python-base
|
||||
|
||||
@ -124,6 +126,8 @@ This package contains additional NFS documentation.
|
||||
%patch5 -p1
|
||||
%patch6 -p1
|
||||
%patch7 -p1
|
||||
%patch8 -p1
|
||||
%patch9 -p1
|
||||
|
||||
cp %{S:6} .
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user