On 01-Apr-14 1:27 PM, Hans Feldt wrote:
>
>
> On 03/28/2014 02:14 PM, [email protected] wrote:
>>   osaf/services/saf/amf/amfd/sg_2n_fsm.cc |  23 +++++++++++++----------
>>   1 files changed, 13 insertions(+), 10 deletions(-)
>>
>>
>> Problem: During si-swap if quiesced assignment faults, AMF returns
>> BAD_OPERATION even though si-swap completes successfuly after recovery.
>>
>> Reason: During si-swap, AMF sends quiesced assignment to active SU.
>> During quiesced assignments, one of the components faults.
>> AMF performs cleanup of this failed component and perfroms the 
>> failover of
>> assignments to standby SU. For the faulted SU assignments are deleted 
>> and
>> when it gets sucessfully repaired, AMF assigns it with standby 
>> assignments.
>> Thus si-swap operation eventually gets successful, but AMF returns
>> BAD_OPERATION for the operation.
>>
>> Fix: Since AMF performs si-swap successfuly despite fault in quiesced 
>> state,
>> this patch ensures that AMF returns SA_AIS_OK for the operation.
>>
>> diff --git a/osaf/services/saf/amf/amfd/sg_2n_fsm.cc 
>> b/osaf/services/saf/amf/amfd/sg_2n_fsm.cc
>> --- a/osaf/services/saf/amf/amfd/sg_2n_fsm.cc
>> +++ b/osaf/services/saf/amf/amfd/sg_2n_fsm.cc
>> @@ -888,16 +888,6 @@ static uint32_t avd_sg_2n_su_fault_su_op
>>       if (su->sg_of_su->su_oper_list.su == su) {
>>           su_ha_state = avd_su_state_determine(su);
>>           if (su_ha_state == SA_AMF_HA_QUIESCED) {
>> -            if (su->su_switch == AVSV_SI_TOGGLE_SWITCH) {
>> -                AVD_SU_SI_REL *temp_susi;
>> -                for (temp_susi = su->list_of_susi; temp_susi != 
>> NULL; temp_susi = temp_susi->su_next) {
>> -                    if (temp_susi->si->invocation != 0) {
>> - avd_saImmOiAdminOperationResult(cb->immOiHandle,
>> - temp_susi->si->invocation, SA_AIS_ERR_BAD_OPERATION);
>> -                        temp_susi->si->invocation = 0;
>> -                    }
>> -                }
>> -            }
>>               m_AVD_SET_SU_SWITCH(cb, su, AVSV_SI_TOGGLE_STABLE);
>
> Why isn't the above line removed also?
>
> This state should be kept until the admin op has been responded, then 
> we forget all about it.
>
In the AMF code nowhere we are checking su->su_switch and si->invocation 
simultaneously which means they are kept very much
independent. So responding for the admin operation is not very much 
dependent on the toggling of su_switch. So we can keep
the above line.
>
>>           } else if (su_ha_state == SA_AMF_HA_QUIESCING) {
>>               if (avd_sidep_si_dependency_exists_within_su(su)) {
>> @@ -2095,6 +2085,19 @@ static uint32_t avd_sg_2n_susi_sucss_su_
>>               }
>>
>>               m_AVD_SET_SG_FSM(cb, (su->sg_of_su), 
>> AVD_SG_FSM_SG_REALIGN);
>> +
>> +            if (su->su_switch == AVSV_SI_TOGGLE_STABLE) {
>
> if the above line is removed, this code won't get triggered. The same 
> needs to be placed somewhere else.
>
I think if "if statement" is removed, the code inside it will always be 
executed which we do not want, just to not break existing functionality.
I did not get what do you mean by removing and placing it somewhere else.

Thanks
Praveen

>> +                                for (AVD_SU_SI_REL *temp_susi = 
>> su->list_of_susi;
>> +                        temp_susi != NULL;
>> +                        temp_susi = temp_susi->su_next) {
>> +                    if (temp_susi->si->invocation != 0) {
>> + avd_saImmOiAdminOperationResult(cb->immOiHandle,
>> +                            temp_susi->si->invocation, SA_AIS_OK);
>> +                        temp_susi->si->invocation = 0;
>> +                                        }
>> +                                }
>> +                        }
>> +
>>           }
>>       } else if ((act == AVSV_SUSI_ACT_MOD) && (state == 
>> SA_AMF_HA_STANDBY) &&
>>              (su->sg_of_su->su_oper_list.su == su)) {
>>
>>


------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to