Skip to contentSkip to conversation

systemd: nfs-server service should use network-online

PATCH In review Steve Dickson 2 participants 5 messages Apr 7, 2017 – Apr 10, 2017

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 systemd: nfs-server service should use network-online

There has been an number startup problems where parts of the NFS server fail to start due to DNS and other parts of the network not be up.

Reading the systemd.special it seems network.target is a passive unit which does not wait and network-online.target is an active unit which does not wait so that should be used.

---
 systemd/nfs-server.service | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
systemd/nfs-server.service +2 -2
index 5be5de6..7cf4ae0 100644
@@ -7,8 +7,8 @@ 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.socket nfs-mountd.service
+After= local-fs.target network-online.target
+After= proc-fs-nfsd.mount rpcbind.socket nfs-mountd.service
 After= nfs-idmapd.service rpc-statd.service
 Before= rpc-statd-notify.service
 
Signature · 1 line
2.9.3
#1 lore raw
Quoted 4 lines · Steve Dickson

There has been an number startup problems where parts of the NFS server fail to start due to DNS and other parts of the network not be up.

Quoted 8 lines

Reading the systemd.special it seems network.target is a passive unit which does not wait and network-online.target is an active unit which does not wait so that should be used.

Committed...

steved.

Quoted 20 lines
---
 systemd/nfs-server.service | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
systemd/nfs-server.service +2 -2
index 5be5de6..7cf4ae0 100644
@@ -7,8 +7,8 @@ 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.socket nfs-mountd.service
+After= local-fs.target network-online.target
+After= proc-fs-nfsd.mount rpcbind.socket nfs-mountd.service
 After= nfs-idmapd.service rpc-statd.service
 Before= rpc-statd-notify.service
 
#2 lore raw
In reply to Steve Dickson
Quoted 8 lines · Steve Dickson

There has been an number startup problems where parts of the NFS server fail to start due to DNS and other parts of the network not be up.

Reading the systemd.special it seems network.target is a passive unit which does not wait and network-online.target is an active unit which does not wait so that should be used.

I assume that last "not" should not be there?

According to systemd.special, we should add
Wants=network-online.target
though "Requires" is probably OK.

nfs-server.service already has
Requires= network.target
which you didn't change.

Also nfs-mountd rpc-statd-notify and rpc.statd all have
After = network.target

They should probably be changed too ??

Thanks,
NeilBrown

Quoted 30 lines
---
 systemd/nfs-server.service | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
systemd/nfs-server.service +2 -2
index 5be5de6..7cf4ae0 100644
@@ -7,8 +7,8 @@ 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.socket nfs-mountd.service
+After= local-fs.target network-online.target
+After= proc-fs-nfsd.mount rpcbind.socket nfs-mountd.service
 After= nfs-idmapd.service rpc-statd.service
 Before= rpc-statd-notify.service
 
Signature · 6 lines
2.9.3

--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
#3 lore raw
Quoted 6 lines · NeilBrown
Quoted 4 lines · Steve Dickson

There has been an number startup problems where parts of the NFS server fail to start due to DNS and other parts of the network not be up.

Quoted 6 lines
Quoted 4 lines

Reading the systemd.special it seems network.target is a passive unit which does not wait and network-online.target is an active unit which does not wait so that should be used.

I assume that last "not" should not be there?

Right...

Quoted 4 lines

According to systemd.special, we should add
Wants=network-online.target
though "Requires" is probably OK.

I did see that... but the bug report said After=
worked so I went with that...

Quoted 9 lines

nfs-server.service already has
Requires= network.target
which you didn't change.

Also nfs-mountd rpc-statd-notify and rpc.statd all have
After = network.target

They should probably be changed too ??

yup... good call.

steved.

Quoted 35 lines

Thanks,
NeilBrown

Quoted 30 lines
---
 systemd/nfs-server.service | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
systemd/nfs-server.service +2 -2
index 5be5de6..7cf4ae0 100644
@@ -7,8 +7,8 @@ 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.socket nfs-mountd.service
+After= local-fs.target network-online.target
+After= proc-fs-nfsd.mount rpcbind.socket nfs-mountd.service
 After= nfs-idmapd.service rpc-statd.service
 Before= rpc-statd-notify.service
 
Signature · 6 lines
2.9.3

--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
#4 lore raw
Quoted 12 lines · Steve Dickson
Quoted 11 lines · NeilBrown
Quoted 8 lines · Steve Dickson

There has been an number startup problems where parts of the NFS server fail to start due to DNS and other parts of the network not be up.

Reading the systemd.special it seems network.target is a passive unit which does not wait and network-online.target is an active unit which does not wait so that should be used.

Quoted 8 lines
Quoted 1 line

I assume that last "not" should not be there?

Right...

Quoted 4 lines

According to systemd.special, we should add
Wants=network-online.target
though "Requires" is probably OK.

I did see that... but the bug report said After=
worked so I went with that...

I think that is dangerous, though obviously not very...

On my openSUSE system,
systemctl show network-online.target | grep By=
only shows
WantedBy=winbind.service

If I didn't have winbind installed, nothing would want the .target, so it wouldn't be activated, so nfs-server wouldn't be ordered with it.

The network still comes up because the services that activate it are WantedBy=multi-user.target
so nfs-server will (eventually) work, but there is no guarantee of ordering.
I think it would be safest to follow the man page and Want or Require network-online.target, rather than assume that something else will.

Thanks,
NeilBrown

Quoted 49 lines
Quoted 10 lines

nfs-server.service already has
Requires= network.target
which you didn't change.

Also nfs-mountd rpc-statd-notify and rpc.statd all have
After = network.target

They should probably be changed too ??

yup... good call.

steved.

Quoted 35 lines

Thanks,
NeilBrown

Quoted 30 lines
---
 systemd/nfs-server.service | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
systemd/nfs-server.service +2 -2
index 5be5de6..7cf4ae0 100644
@@ -7,8 +7,8 @@ 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.socket nfs-mountd.service
+After= local-fs.target network-online.target
+After= proc-fs-nfsd.mount rpcbind.socket nfs-mountd.service
 After= nfs-idmapd.service rpc-statd.service
 Before= rpc-statd-notify.service
 
Signature · 6 lines
2.9.3

--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html