Roland Mainz wrote:
> - "usr/src/cmd/dlmgmtd/svc-dlmgmtd" contains something weired:
> -- snip --
> +# The real daemon is not started in a non-global zone. But we need to
> +# create a dummy background process to preserve contract lifetime.
> +
> +if smf_is_nonglobalzone; then
> +     (while true ; do sleep 3600 ; done) & 
> +     exit $SMF_EXIT_OK
> +fi
> -- snip --
> Erm... questions:
> 1. why is this done.. 
> 2. ... and how should this work ? I assume the shell child process will
> "meet the truck" at the first SIGHUP... or am I wrong in this case ?
> 3. At which runlevel is this script used, before or after /usr has been
> mounted ?

   A contract-duration service's start method is expected to exit having
   started some long-running daemon or set of daemons.  If those
   processes ever die out, startd notices and restarts them.

   If a contract-duration service sometimes doesn't need to start long-
   running daemons, simply returning isn't an option.  startd will think
   some calamity immediately befell the service and will immediately
   restart it.  Eventually it will think something is seriously wrong
   and put the service in the maintenance state.

   This code is faking out SMF, making it think that the service is
   healthy (which it truly is) and running (which it really isn't).
   I notice svc-nscd plays a similar trick.

   I just filed RFE 6611755 to find a better way of doing this.

   Dave

Reply via email to