Comment 9 for bug 555661

Revision history for this message
Steve Langasek (vorlon) wrote :

> No. Per my last message, there is no running statd to log anything.

Yes, I was asking if it logged anything before it died.

> But "service statd stop" still hangs.

Yes, because upstart has been confused into thinking it's running when it isn't.

> if [ "x$NEED_STATD" != xno ]; then
> ls -l /var/lib/nfs >&2 || true
> exec rpc.statd -L $STATDOPTS
> fi

Er, this will *definitely* fail. Because this script is marked 'expect fork', it will track the first child process that's forked off by the script - in this case, ls - and consider *that* to be the service. Why is this 'ls' command here?

(This is bug #406397)

> statd: Could not chdir: No such file or directory

> What's in that last script is important and probably the root cause as
> far as the boot time failure and that's that /var is on it's own
> filesystem. I have another bug open about this issue.

Ah; that'll be the root cause of your boot-time failure, then. What's the bug number for this issue? It should be a bug on nfs-utils.

> Having statd start on (started portmap or mount TYPE=nfs) is not good
> enough. It has to wait for /var to be mounted. But does that mean it
> should just add a dependency on (local?) filesystems being mounted?
> That sounds too course to me.

There are two conflicting use cases here - one where /var is a separate local filesystem, and one where root is on NFS. When using nfsroot, we *can't* wait for the 'local-filesystems' event, as doing so blocks the root filesystem from ever being set up correctly by mountall. (We just fixed a bug in portmap wrt this - bug #537133).

I think the case where the system unrecoverably hangs on boot (the nfsroot case) has to take precedence here. For your case, you should be able to edit /etc/init/statd.conf as you describe to be 'start on portmap and mounted MOUNTPOINT=/var"; except that this won't stop mountall from trying to mount NFS mounts in parallel at boot time, so if you have such mounts that will fail if statd isn't running, that still doesn't solve your problem.