Hi Praveen ack (code review)
Thanks > On 30 Sep. 2016, at 4:54 pm, [email protected] wrote: > > osaf/services/saf/amf/amfd/sg_nway_fsm.cc | 10 ++++++++++ > osaf/services/saf/amf/amfd/si.cc | 8 ++++++-- > 2 files changed, 16 insertions(+), 2 deletions(-) > > > AMF make SI active in two SUs when a component faults with su-failover > recovery > in removal callback during lock operation on SU. In > > As a part of lock operation when quiesced assignment gets successful for > both SI1 and SI2 in the locked SU1, AMFD makes SU2 active for both the SIs and > sends SU level delete to SU1. Comp1 in SU1 faults with su-failover recovery > while handling > CSI Remove callback. AMFD makes SU3 active for both SIs as part of recovery. > Since SU2 > was already made active after successful quiesced assignments, AMFD should > not perform > failover of SI1 and SI2 to SU3. > > Patch avoids failover if SI is already active in some other healthy SU. > > diff --git a/osaf/services/saf/amf/amfd/sg_nway_fsm.cc > b/osaf/services/saf/amf/amfd/sg_nway_fsm.cc > --- a/osaf/services/saf/amf/amfd/sg_nway_fsm.cc > +++ b/osaf/services/saf/amf/amfd/sg_nway_fsm.cc > @@ -2999,6 +2999,16 @@ void avd_sg_nway_node_fail_stable(AVD_CL > if (curr_susi == susi) > continue; > > + /* > + This node and its SUs are already marked OOS. > + If a valid active SISU exists for this SI on some other node > and this SI > + is not having any sponsor then continue the for loop as for > this > + SI (curr_susi->si) neither failover is required nor deletion > of all > + assignments. This curr_susi will be deleted in this function. > + */ > + if ((curr_susi->si->is_active() == true) && > (curr_susi->si->spons_si_list == nullptr)) > + continue; > + > if ((SA_AMF_HA_ACTIVE == curr_susi->state) || > (SA_AMF_HA_QUIESCED == curr_susi->state) || > (SA_AMF_HA_QUIESCING == curr_susi->state)) { > /* identify the most preferred standby su for this si */ > diff --git a/osaf/services/saf/amf/amfd/si.cc > b/osaf/services/saf/amf/amfd/si.cc > --- a/osaf/services/saf/amf/amfd/si.cc > +++ b/osaf/services/saf/amf/amfd/si.cc > @@ -1553,8 +1553,12 @@ void AVD_SI::update_alarm_state(bool ala > bool AVD_SI::is_active() const > { > for (AVD_SU_SI_REL *sisu = list_of_sisu; sisu != nullptr; sisu = > sisu->si_next) { > - if ((sisu->state == SA_AMF_HA_ACTIVE) && (sisu->fsm == > AVD_SU_SI_STATE_ASGND) && > - (sisu->su->saAmfSuReadinessState == > SA_AMF_READINESS_IN_SERVICE)) { > + if ((sisu->state == SA_AMF_HA_ACTIVE) && > + ((sisu->fsm == AVD_SU_SI_STATE_ASGND) || > + (sisu->fsm == AVD_SU_SI_STATE_ASGN) || > + (sisu->fsm == AVD_SU_SI_STATE_MODIFY)) && > + (sisu->si->saAmfSIAdminState == SA_AMF_ADMIN_UNLOCKED) > && > + (sisu->su->saAmfSuReadinessState == > SA_AMF_READINESS_IN_SERVICE)) { > return true; > } > } ------------------------------------------------------------------------------ Developer Access Program for Intel Xeon Phi Processors Access to Intel Xeon Phi processor-based developer platforms. With one year of Intel Parallel Studio XE. Training and support from Colfax. Order your platform today. http://sdm.link/xeonphi _______________________________________________ Opensaf-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/opensaf-devel
