Message ID | 1425403690-23847-3-git-send-email-martin.pitt@ubuntu.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue, Mar 03, 2015 at 06:28:10PM +0100, Martin Pitt wrote: > Stop depending on basic.target in the daemons which still do; i. e. add > DefaultDependencies=no. This makes it possible to run NFS during early boot, > and helps if you e. g. have /var on NFS. We don't require much else than > local-fs. Are you sure that all of those nfs daemons do not require sockets.target and other stuff provided by basic.target to be ready? Zbyszek > --- > systemd/auth-rpcgss-module.service | 1 + > systemd/nfs-config.service | 2 ++ > systemd/nfs-idmapd.service | 3 ++- > systemd/nfs-mountd.service | 3 ++- > systemd/nfs-server.service | 2 ++ > systemd/rpc-statd-notify.service | 3 ++- > systemd/rpc-svcgssd.service | 3 ++- > 7 files changed, 13 insertions(+), 4 deletions(-) > > diff --git a/systemd/auth-rpcgss-module.service b/systemd/auth-rpcgss-module.service > index 0355e13..5241f7b 100644 > --- a/systemd/auth-rpcgss-module.service > +++ b/systemd/auth-rpcgss-module.service > @@ -6,6 +6,7 @@ > # unit will fail. But that's OK.) > [Unit] > Description=Kernel Module supporting RPCSEC_GSS > +DefaultDependencies=no > Before=gssproxy.service rpc-svcgssd.service rpc-gssd.service > Wants=gssproxy.service rpc-svcgssd.service rpc-gssd.service > ConditionPathExists=/etc/krb5.keytab > diff --git a/systemd/nfs-config.service b/systemd/nfs-config.service > index 64010e6..7f65305 100644 > --- a/systemd/nfs-config.service > +++ b/systemd/nfs-config.service > @@ -1,5 +1,7 @@ > [Unit] > Description=Preprocess NFS configuration > +After=local-fs.target > +DefaultDependencies=no > > [Service] > Type=oneshot > diff --git a/systemd/nfs-idmapd.service b/systemd/nfs-idmapd.service > index e84f8c8..df3dd9d 100644 > --- a/systemd/nfs-idmapd.service > +++ b/systemd/nfs-idmapd.service > @@ -1,7 +1,8 @@ > [Unit] > Description=NFSv4 ID-name mapping service > +DefaultDependencies=no > Requires=var-lib-nfs-rpc_pipefs.mount > -After=var-lib-nfs-rpc_pipefs.mount > +After=var-lib-nfs-rpc_pipefs.mount local-fs.target > > BindsTo=nfs-server.service > > diff --git a/systemd/nfs-mountd.service b/systemd/nfs-mountd.service > index d908afe..8a39f3e 100644 > --- a/systemd/nfs-mountd.service > +++ b/systemd/nfs-mountd.service > @@ -1,8 +1,9 @@ > [Unit] > Description=NFS Mount Daemon > +DefaultDependencies=no > Requires=proc-fs-nfsd.mount > After=proc-fs-nfsd.mount > -After=network.target > +After=network.target local-fs.target > BindsTo=nfs-server.service > > Wants=nfs-config.service > diff --git a/systemd/nfs-server.service b/systemd/nfs-server.service > index b35e193..db801cb 100644 > --- a/systemd/nfs-server.service > +++ b/systemd/nfs-server.service > @@ -1,10 +1,12 @@ > [Unit] > Description=NFS server and services > +DefaultDependencies=no > 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 > > +After= local-fs.target > After= network.target proc-fs-nfsd.mount rpcbind.target nfs-mountd.service > After= nfs-idmapd.service rpc-statd.service > Before= rpc-statd-notify.service > diff --git a/systemd/rpc-statd-notify.service b/systemd/rpc-statd-notify.service > index a655445..a7e2f8e 100644 > --- a/systemd/rpc-statd-notify.service > +++ b/systemd/rpc-statd-notify.service > @@ -1,7 +1,8 @@ > [Unit] > Description=Notify NFS peers of a restart > +DefaultDependencies=no > Requires=network-online.target > -After=network.target nss-lookup.target > +After=local-fs.target network.target nss-lookup.target > > # if we run an nfs server, it needs to be running before we > # tell clients that it has restarted. > diff --git a/systemd/rpc-svcgssd.service b/systemd/rpc-svcgssd.service > index f7424b0..41177b6 100644 > --- a/systemd/rpc-svcgssd.service > +++ b/systemd/rpc-svcgssd.service > @@ -1,7 +1,8 @@ > [Unit] > Description=RPC security service for NFS server > +DefaultDependencies=no > Requires=var-lib-nfs-rpc_pipefs.mount > -After=var-lib-nfs-rpc_pipefs.mount > +After=var-lib-nfs-rpc_pipefs.mount local-fs.target > PartOf=nfs-server.service > PartOf=nfs-utils.service > > -- > 2.1.4 > > _______________________________________________ > systemd-devel mailing list > systemd-devel@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- 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
Hello all, Zbigniew J?drzejewski-Szmek [2015-03-03 19:08 +0100]: > Are you sure that all of those nfs daemons do not require > sockets.target and other stuff provided by basic.target to be ready? The corresponding upstart jobs trigger on virtual file systems (/sys, etc.) and rpcbind, and we've used them for years. Also, NFS does not yet use socket activation, or talks to other services on sockets (except for rpcbind), so we don't need sockets.target either. The other dependencies (some network.target, some nss-lookup.target, etc.) are already specified explicitly. So I'm quite sure. That said, there's of course always a nonzero chance that this breaks in a case which I haven't tested. In particular, I didn't test kerberos/gssd, I'd appreciate if someone who has a real-world setup with that could give this a spin. Thanks, Martin
On 03/03/2015 03:12 PM, Martin Pitt wrote: > Hello all, > > Zbigniew J?drzejewski-Szmek [2015-03-03 19:08 +0100]: >> Are you sure that all of those nfs daemons do not require >> sockets.target and other stuff provided by basic.target to be ready? > > The corresponding upstart jobs trigger on virtual file systems (/sys, > etc.) and rpcbind, and we've used them for years. Also, NFS does not > yet use socket activation, or talks to other services on sockets > (except for rpcbind), so we don't need sockets.target either. The > other dependencies (some network.target, some nss-lookup.target, etc.) > are already specified explicitly. So I'm quite sure. You are correct. rpcbind is the only service we have that uses socket activation, which I don't think works very well... Just last week I notice if you reboot a vm and the first command you type is rpcinfo -p. That command will time out trying to talk with rpcbind. After the timeout everything works fine... I thought I opened a bz but I can't seem to find it. steved. > > That said, there's of course always a nonzero chance that this breaks > in a case which I haven't tested. In particular, I didn't test > kerberos/gssd, I'd appreciate if someone who has a real-world setup > with that could give this a spin. > > Thanks, > > Martin > -- 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
diff --git a/systemd/auth-rpcgss-module.service b/systemd/auth-rpcgss-module.service index 0355e13..5241f7b 100644 --- a/systemd/auth-rpcgss-module.service +++ b/systemd/auth-rpcgss-module.service @@ -6,6 +6,7 @@ # unit will fail. But that's OK.) [Unit] Description=Kernel Module supporting RPCSEC_GSS +DefaultDependencies=no Before=gssproxy.service rpc-svcgssd.service rpc-gssd.service Wants=gssproxy.service rpc-svcgssd.service rpc-gssd.service ConditionPathExists=/etc/krb5.keytab diff --git a/systemd/nfs-config.service b/systemd/nfs-config.service index 64010e6..7f65305 100644 --- a/systemd/nfs-config.service +++ b/systemd/nfs-config.service @@ -1,5 +1,7 @@ [Unit] Description=Preprocess NFS configuration +After=local-fs.target +DefaultDependencies=no [Service] Type=oneshot diff --git a/systemd/nfs-idmapd.service b/systemd/nfs-idmapd.service index e84f8c8..df3dd9d 100644 --- a/systemd/nfs-idmapd.service +++ b/systemd/nfs-idmapd.service @@ -1,7 +1,8 @@ [Unit] Description=NFSv4 ID-name mapping service +DefaultDependencies=no Requires=var-lib-nfs-rpc_pipefs.mount -After=var-lib-nfs-rpc_pipefs.mount +After=var-lib-nfs-rpc_pipefs.mount local-fs.target BindsTo=nfs-server.service diff --git a/systemd/nfs-mountd.service b/systemd/nfs-mountd.service index d908afe..8a39f3e 100644 --- a/systemd/nfs-mountd.service +++ b/systemd/nfs-mountd.service @@ -1,8 +1,9 @@ [Unit] Description=NFS Mount Daemon +DefaultDependencies=no Requires=proc-fs-nfsd.mount After=proc-fs-nfsd.mount -After=network.target +After=network.target local-fs.target BindsTo=nfs-server.service Wants=nfs-config.service diff --git a/systemd/nfs-server.service b/systemd/nfs-server.service index b35e193..db801cb 100644 --- a/systemd/nfs-server.service +++ b/systemd/nfs-server.service @@ -1,10 +1,12 @@ [Unit] Description=NFS server and services +DefaultDependencies=no 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 +After= local-fs.target After= network.target proc-fs-nfsd.mount rpcbind.target nfs-mountd.service After= nfs-idmapd.service rpc-statd.service Before= rpc-statd-notify.service diff --git a/systemd/rpc-statd-notify.service b/systemd/rpc-statd-notify.service index a655445..a7e2f8e 100644 --- a/systemd/rpc-statd-notify.service +++ b/systemd/rpc-statd-notify.service @@ -1,7 +1,8 @@ [Unit] Description=Notify NFS peers of a restart +DefaultDependencies=no Requires=network-online.target -After=network.target nss-lookup.target +After=local-fs.target network.target nss-lookup.target # if we run an nfs server, it needs to be running before we # tell clients that it has restarted. diff --git a/systemd/rpc-svcgssd.service b/systemd/rpc-svcgssd.service index f7424b0..41177b6 100644 --- a/systemd/rpc-svcgssd.service +++ b/systemd/rpc-svcgssd.service @@ -1,7 +1,8 @@ [Unit] Description=RPC security service for NFS server +DefaultDependencies=no Requires=var-lib-nfs-rpc_pipefs.mount -After=var-lib-nfs-rpc_pipefs.mount +After=var-lib-nfs-rpc_pipefs.mount local-fs.target PartOf=nfs-server.service PartOf=nfs-utils.service