[prev in list] [next in list] [prev in thread] [next in thread] 

List:       opensolaris-smf-discuss
Subject:    Re: [smf-discuss] general/enabled is required for general_ovr/enabled?
From:       Tony Nguyen <Truong.Q.Nguyen () Sun ! COM>
Date:       2007-03-21 23:25:18
Message-ID: 4601CD5A.3070207 () sun ! com
[Download RAW message or body]

Liane Praza wrote:
> 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.
>
>   
This make a lot more sense. I'll look closer into this.
>> 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. :)
>
>   
In set_inst_enabled, we only check for the existence of property group 
we're enabling(either general or general_ovr) and create that if it 
doesn't exist. We should probably always check for the existence of 
general/enabled property and create it if necessary. I'll file a bug and 
assign myself to it :^)

Thanks,
-tony
_______________________________________________
smf-discuss mailing list
smf-discuss@opensolaris.org
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic