Behaviour of mounting event

Andrew Edmunds Andrew.Edmunds at
Fri Aug 27 14:30:46 BST 2010


Suppose I have a job B which includes the following stanza:

start on (started A or mounting MOUNTPOINT=/m)

It seems that the following sequence of events can occur:
1. "started A" event is emitted
2. Job B starts
3. "mounting MOUNTPOINT=/m" event is emitted
4. "mounting MOUNTPOINT=/m" event completes
5. mountall attempts to mount /m
6. Job B's main process is started
7. Job B is marked as "running"

So the "start on" stanza fails to guarantee that job B is actually
running before /m is mounted.

mounting(7) says that mountall will "wait for all services started by
this event to be running ... before proceeding with mounting the
filesystem."  The above behaviour is consistent with that, since job B
was not triggered by the mounting event. However, the behaviour doesn't
seem very useful.  I would suggest that mountall needs to wait until all
services that *would be* started by this event are running, even if they
were actually started by something else.

Can anyone comment on why it wasn't implemented that way?

Can someone suggest how to change the start condition to get the
desired behaviour?

I realise that the mounting event is defined by mountall but I think the
relevant logic about which events block which others is inside
upstart(?).  And I couldn't find a mailing list for mountall anyway so I
decided to try asking here.

More information about the upstart-devel mailing list