systemd: nfs-server service should use network-online
Subsystems (2)
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
@@ -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
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.
Signed-off-by Steve Dickson <[email protected]>
Committed...
steved.
Quoted 20 lines
--- systemd/nfs-server.service | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)systemd/nfs-server.service +2
-2@@ -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
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
Signed-off-by Steve Dickson <[email protected]>--- systemd/nfs-server.service | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)systemd/nfs-server.service +2
-2@@ -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.serviceSignature · 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
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.targetThey should probably be changed too ??
yup... good call.
steved.
Quoted 35 lines
Thanks,
NeilBrownQuoted 30 lines
Signed-off-by Steve Dickson <[email protected]>--- systemd/nfs-server.service | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)systemd/nfs-server.service +2
-2@@ -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.serviceSignature · 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
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.targetThey should probably be changed too ??
yup... good call.
steved.
Quoted 35 lines
Thanks,
NeilBrownQuoted 30 lines
Signed-off-by Steve Dickson <[email protected]>--- systemd/nfs-server.service | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)systemd/nfs-server.service +2
-2@@ -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.serviceSignature · 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