Tony Nguyen writes:
> A transient enabling creates general_ovr/enabled property and sets the 
> state to 'true (temporary)'. However, if the general/enabled property is 
> missing, the instance can't come online and stays at disabled state. 
> Adding the general/enabled property will make the instance become 
> online. So it looks like general_ovr/enabled requires the existence of 
> general/enabled.
> 
> Two questions.
> Why does general/enabled property need to exist? Or I'm missing 
> something here.

Currently, svc.startd takes the existance of a general property group
on an instance as a key to take notice of the instance and start
doing something about it.

There are 2 main reasons for this:
1) startd doesn't do anything useful with a service that isn't enabled.

2) It was a quickly-implementable way to ensure that startd didn't
   notice a service until we finished importing it.  That is, during
   svccfg import we set the general/enabled property *last* so that
   startd doesn't try to start up a service that's half imported.

   I'm not proud of that particular bit of implementation, but it
   solved the problem at hand when we were under quite a bit of time
   pressure.

The comments with libscf_get_basic_instance_data() and
dgraph_update_general() in the startd code give a clue to the
behaviour, but we should be more explicit in the header comment of
graph.c.

(svccfg seems silent about this behaviour in its comments, though the
SCI_GENERALLAST flag is the setting which controls creating general
last.)

I'm also not the biggest fan of the general_ovr implementation, and
hope that someday we will have temporary overrides of properties that
aren't required to use an alternate namespace defined only by convention.

> We can create general_ovr/enabled if it doesn't exist in 
> set_inst_enabled_flags, can't we do the same for general/enabled if 
> doesn't already exist when need to enable general_ovr/enabled?

I infer from your statement that
smf_[enable|disable]_instance(*, SMF_TEMPORARY) doesn't create both
general/enabled and general_ovr/enabled (when they don't exist)?  If so,
sounds like a bug.

Feel free to file and fix. :)

liane
-- 
Liane Praza, Solaris Kernel Development
liane.praza at sun.com - http://blogs.sun.com/lianep

Reply via email to