i think i see what this code is trying to do...   you've got two mutual exclusion problems.  you don't want to run two daemons at once, but you also don't want to do two converges at once.   i think we need two different lockfiles for the different locks or we're going to have an edge condition somewhere that doesn't work...

we may actually not block child convergences like i wrote since the child proc will inherit the flock and can certainly reacquire it.  but if we fix it so that the flock is always held so that we prevent multiple daemons piling up, then we cannot run chef-client from the command line.  if we release the daemon lock so that we can run chef-client on the command line, then we can also run multiple daemon processes...