systemd: nfs-server service should use network-online
diff mbox

Message ID 20170407150738.6200-1-steved@redhat.com
State New
Headers show

Commit Message

Steve Dickson April 7, 2017, 3:07 p.m. UTC
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.

Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1419351

Signed-off-by: Steve Dickson <steved@redhat.com>
---
 systemd/nfs-server.service | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Steve Dickson April 9, 2017, 7:01 p.m. UTC | #1
On 04/07/2017 11:07 AM, Steve Dickson wrote:
> 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.
> 
> Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1419351
> 
> Signed-off-by: Steve Dickson <steved@redhat.com>
Committed... 

steved.

> ---
>  systemd/nfs-server.service | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/systemd/nfs-server.service b/systemd/nfs-server.service
> index 5be5de6..7cf4ae0 100644
> --- a/systemd/nfs-server.service
> +++ b/systemd/nfs-server.service
> @@ -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
>  
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
NeilBrown April 10, 2017, 1:12 a.m. UTC | #2
On Fri, Apr 07 2017, Steve Dickson wrote:

> 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


>
> Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1419351
>
> Signed-off-by: Steve Dickson <steved@redhat.com>
> ---
>  systemd/nfs-server.service | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/systemd/nfs-server.service b/systemd/nfs-server.service
> index 5be5de6..7cf4ae0 100644
> --- a/systemd/nfs-server.service
> +++ b/systemd/nfs-server.service
> @@ -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.9.3
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
Steve Dickson April 10, 2017, 10:58 a.m. UTC | #3
On 04/09/2017 09:12 PM, NeilBrown wrote:
> On Fri, Apr 07 2017, Steve Dickson wrote:
> 
>> 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?
Right... 
> 
> 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... 

> 
> 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.

> 
> Thanks,
> NeilBrown
> 
> 
>>
>> Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1419351
>>
>> Signed-off-by: Steve Dickson <steved@redhat.com>
>> ---
>>  systemd/nfs-server.service | 4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/systemd/nfs-server.service b/systemd/nfs-server.service
>> index 5be5de6..7cf4ae0 100644
>> --- a/systemd/nfs-server.service
>> +++ b/systemd/nfs-server.service
>> @@ -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.9.3
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
NeilBrown April 10, 2017, 9:35 p.m. UTC | #4
On Mon, Apr 10 2017, Steve Dickson wrote:

> On 04/09/2017 09:12 PM, NeilBrown wrote:
>> On Fri, Apr 07 2017, Steve Dickson wrote:
>> 
>>> 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?
> Right... 
>> 
>> 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


>
>> 
>> 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.
>
>> 
>> Thanks,
>> NeilBrown
>> 
>> 
>>>
>>> Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1419351
>>>
>>> Signed-off-by: Steve Dickson <steved@redhat.com>
>>> ---
>>>  systemd/nfs-server.service | 4 ++--
>>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/systemd/nfs-server.service b/systemd/nfs-server.service
>>> index 5be5de6..7cf4ae0 100644
>>> --- a/systemd/nfs-server.service
>>> +++ b/systemd/nfs-server.service
>>> @@ -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.9.3
>>>
>>> --
>>> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
>>> the body of a message to majordomo@vger.kernel.org
>>> More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch
diff mbox

diff --git a/systemd/nfs-server.service b/systemd/nfs-server.service
index 5be5de6..7cf4ae0 100644
--- a/systemd/nfs-server.service
+++ b/systemd/nfs-server.service
@@ -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