On Thu, 2010-02-25 at 13:35 +0000, Steve Langasek wrote: 
> statd is "start on (started portmap or mount TYPE=nfs)"
> portmap is "start on (local-filesystems and net-device-up IFACE=lo)"

I'm not terribly conversant on the state language of upstart yet, but
does the above say that statd will be started after portmap has been
started *or* an NFS mount is required and portmap will be started after
local-filesystems has been completed and interface "lo" is up?

> and the statd job tries to start portmap if it's not already running.

Yeah.

> So the only possible race conditions I see here are if
>  - mount TYPE=nfs is emitted before all the local filesystems are mounted

Indeed!  And I believe this is in fact the race I am running into.

> - mount TYPE=nfs is emitted before lo is configured, and this causes
portmap to fail

Nope.  I have debugged enough to know this is not the case.

> - /var is on a network filesystem *other* than NFS (if it's on NFS,
then this can't really be solved, you just get a deadlock if you try)

Nope.  /var is local.

> Can you post your fstab, so I can better understand which of these cases
> applies?

Sure:

# /etc/fstab: static file system information.
#
# file system    mount point   type    options                  dump pass
/dev/rootvol/ubuntu_root /      ext3    defaults                 0    0
UUID=9d79e085-9980-444d-b58b-e0a49b5c2edb /boot ext3 rw,nosuid,nodev 0 2

/dev/rootvol/swap none         swap    sw                       0    0
proc             /proc         proc    defaults                 0    0
sys              /sys          sysfs   defaults                 0    0

/dev/fd0         /mnt/floppy   auto    noauto,rw,sync,user,exec 0    0
/dev/cdrom       /mnt/cdrom    auto    noauto,ro,user,exec      0    0
/dev/rootvol/ubuntu_var /var    ext3    rw,nosuid,nodev          0    2
/dev/rootvol/apt_archives /var/cache/apt/archives ext3 rw,nosuid,nodev 0 2
/dev/rootvol/ubuntu_usr /usr    ext3    rw,nodev                 0    2
/dev/rootvol/home /home        ext3    rw,nosuid,nodev          0    2
/dev/datavol/video /video      xfs     rw,nosuid,nodev          0    2
pc:/home/brian   /autohome/brian nfs   
auto,exec,dev,suid,rw,bg,rsize=8192,wsize=8192 1 1
linux:/mnt/mp3/library /var/lib/mythtv/music nfs 
rw,noexec,nodev,nosuid,bg,rsize=8192,wsize=8192 1 1
linux:/usr/src /usr/src nfs rw,nodev,nosuid,bg,rsize=8192,wsize=8192 1 1

I think you will agree that it's the first race condition.

I'm not sure exactly what "local-filesystems" signal is signalling but
assuming it really does mean "local" (i.e. directly attached block
devices) is there any reason the boolean operator in the condition for
starting statd is not "and" rather than "or"?  That would ensure
that /var is mounted and portmapper is running before a statd start is
attempted.  Doesn't statd require portmapper anyway?

-- 
mountall for /var races with rpc.statd
https://bugs.launchpad.net/bugs/525154
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to