[Pvfs2-developers] patches: admin utilities
Walter B. Ligon III
walt at CLEMSON.EDU
Thu Nov 29 11:01:57 EST 2007
I like both Pete's ideas.
The original implementation where state actions were declared "manually"
allowed shared or extern actions - and that probably fits the standard C
model better - it's hard to auto-generate that stuff in the general
case. But, putting all of those in there is a pain in the ass - and I
think these two ideas (nested SMs and a wrapper function) are the best
way to deal with this.
Now, if we start doing it all the time, might want to re-think.
Walt
Sam Lang wrote:
>
> On Nov 28, 2007, at 7:41 PM, Pete Wyckoff wrote:
>
>> pcarns at wastedcycles.org wrote on Wed, 28 Nov 2007 10:24 -0800:
>>> Thanks for working on the update, Sam.
>>>
>>> I'm kinda stumped on that statecomp issue too. I have a couple of
>>> random
>>> ideas to throw out there, but I'm not really thrilled with them either:
>>>
>>> - If we continue on the track of modifying the state machines, it
>>> might be
>>> good to try to get rid of the manual function declarations for this
>>> case.
>>> For example, maybe add two new directives, a "run_global" and
>>> "run_external". The former would be used in create.sm and would be like
>>> "run" except it wouldn't emit a static modifier on the function
>>> declaration. The latter would be used in repair.sm and would be like
>>> run
>>> except it would emit an extern modifier on the function declaration.
>>> Then
>>> the extra header with function declarations could be dropped from the
>>> patch.
>>>
>>> - This idea is kind of goofy from an organizational standpoint, but
>>> if we
>>> didn't want to modify statecomp syntax at all, we could just put the
>>> repair and create state machines in the same .sm file (presumably
>>> create.sm). I assume that statecomp already knows to only emit one
>>> function declaration once even if it is used in two different run
>>> directives.
>>>
>>> - I haven't looked to see how hard this would be, but maybe these
>>> problems
>>> indicate that it would be better to use nested state machines for this
>>> purpose rather than reusing state functions. I know there was a good
>>> reason for doing it the way the first patch did it (probably the states
>>> need to be ordered differently enough that the nested machine
>>> approach is
>>> a little tough), but maybe nowadays it is better to go the nested route.
>>
>> Agree with this last approach. Nested SMs would be great if they
>> worked out conceptually.
>>
>> Or if desperate, put shared functions elsewhere, not under control
>> of a state machine. Then each SM can use its own "run my_func"
>> where each .sm file has
>>
>> #include <handy-funcs.h> /* declares func() */
>>
>> static int my_func(SM *sm)
>> {
>> return func(sm);
>> }
>>
>> Compiler magic should turn that into a noop.
>>
>> The various rung, run_external, run_global, etc. seem very kludgey
>> and icky to have to expose to people. In a perfect world we'd have
>> a compiler that looks at all the SMs at the same time and gets the
>> declarations correct, but that's a serious pain and bad idea for
>> other reasons.
>
> Totally agree. Nested SMs are the right choice here.
> -sam
>
>>
>>
>> -- Pete
>>
>
> _______________________________________________
> Pvfs2-developers mailing list
> Pvfs2-developers at beowulf-underground.org
> http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers
--
Dr. Walter B. Ligon III
Associate Professor
ECE Department
Clemson University
More information about the Pvfs2-developers
mailing list