Don't remember exactly, but may be because of upgrade issue for adding/deleting csi, extra SG fsm state would have been required, so not coded like typical SG fsm style.
Thanks -Nagu -----Original Message----- From: Hans Feldt [mailto:hans.fe...@ericsson.com] Sent: 20 November 2013 18:33 To: Nagendra Kumar; hans.nordeb...@ericsson.com Cc: opensaf-devel@lists.sourceforge.net Subject: Re: [devel] [PATCH 1 of 1] amfd: Reject admin op if csi add/remove is in progress [#627] Usually we set the SG state non stable when operating on SUs. So why isn't this "standard" mechanism used in this case? Thanks, Hans On 11/20/2013 11:05 AM, Nagendra Kumar wrote: > Hi Hans N, Hans F, > > Any comments on this ? > > Thanks > -Nagu > -----Original Message----- > From: Nagendra Kumar > Sent: 14 November 2013 17:11 > To: hans.fe...@ericsson.com; hans.nordeb...@ericsson.com > Cc: opensaf-devel@lists.sourceforge.net > Subject: [devel] [PATCH 1 of 1] amfd: Reject admin op if csi > add/remove is in progress [#627] > > osaf/services/saf/avsv/avd/avd_csi.c | 18 ++++++++++++++++++ > osaf/services/saf/avsv/avd/avd_sg.c | 7 +++++++ > osaf/services/saf/avsv/avd/avd_si.c | 7 +++++++ > osaf/services/saf/avsv/avd/avd_su.c | 8 ++++++++ > osaf/services/saf/avsv/avd/include/avd_csi.h | 1 + > 5 files changed, 41 insertions(+), 0 deletions(-) > > > diff --git a/osaf/services/saf/avsv/avd/avd_csi.c > b/osaf/services/saf/avsv/avd/avd_csi.c > --- a/osaf/services/saf/avsv/avd/avd_csi.c > +++ b/osaf/services/saf/avsv/avd/avd_csi.c > @@ -1234,3 +1234,21 @@ void avd_csi_constructor(void) > avd_class_impl_set("SaAmfCSI", NULL, NULL, csi_ccb_completed_cb, > csi_ccb_apply_cb); } > > +/** > + * @brief Check whether the Single csi assignment is undergoing on the SG. > + * > + * @param[in] sg - Pointer to the Service Group. > + * > + * @return true if operation is undergoing else false. > + */ > +bool csi_assignment_validate(AVD_SG *sg) { > + AVD_SI *temp_si; > + AVD_SU_SI_REL *temp_sisu; > + > + for (temp_si = sg->list_of_si; temp_si; temp_si = > temp_si->sg_list_of_si_next) > + for (temp_sisu = temp_si->list_of_sisu; temp_sisu; temp_sisu = > temp_sisu->si_next) > + if (temp_sisu->csi_add_rem == true) > + return true; > + return false; > +} > diff --git a/osaf/services/saf/avsv/avd/avd_sg.c > b/osaf/services/saf/avsv/avd/avd_sg.c > --- a/osaf/services/saf/avsv/avd/avd_sg.c > +++ b/osaf/services/saf/avsv/avd/avd_sg.c > @@ -28,6 +28,7 @@ > #include <avd_sg.h> > #include <avd_proc.h> > #include <avd_si_dep.h> > +#include <avd_csi.h> > > static NCS_PATRICIA_TREE sg_db; > static void avd_verify_equal_ranked_su(AVD_SG *avd_sg); @@ -1021,6 +1022,12 > @@ static void sg_admin_op_cb(SaImmOiHandle > } > } > > + /* Avoid if any single Csi assignment is undergoing on SG. */ > + if (csi_assignment_validate(sg) == true) { > + rc = SA_AIS_ERR_TRY_AGAIN; > + LOG_WA("Single Csi assignment undergoing on (sg'%s')", > sg->name.value); > + goto done; > + } > > /* if Tolerance timer is running for any SI's withing this SG, then > return SA_AIS_ERR_TRY_AGAIN */ > if (sg_is_tolerance_timer_running_for_any_si(sg)) { diff --git > a/osaf/services/saf/avsv/avd/avd_si.c > b/osaf/services/saf/avsv/avd/avd_si.c > --- a/osaf/services/saf/avsv/avd/avd_si.c > +++ b/osaf/services/saf/avsv/avd/avd_si.c > @@ -793,6 +793,13 @@ static void si_admin_op_cb(SaImmOiHandle > goto done; > } > > + /* Avoid if any single Csi assignment is undergoing on SG. */ > + if (csi_assignment_validate(si->sg_of_si) == true) { > + rc = SA_AIS_ERR_TRY_AGAIN; > + LOG_WA("Single Csi assignment undergoing on (sg'%s')", > si->sg_of_si->name.value); > + goto done; > + } > + > switch (operationId) { > case SA_AMF_ADMIN_UNLOCK: > if (SA_AMF_ADMIN_UNLOCKED == si->saAmfSIAdminState) { diff > --git > a/osaf/services/saf/avsv/avd/avd_su.c > b/osaf/services/saf/avsv/avd/avd_su.c > --- a/osaf/services/saf/avsv/avd/avd_su.c > +++ b/osaf/services/saf/avsv/avd/avd_su.c > @@ -27,6 +27,7 @@ > #include <avd_imm.h> > #include <avd_ntf.h> > #include <avd_proc.h> > +#include <avd_csi.h> > > static NCS_PATRICIA_TREE su_db; > > @@ -898,6 +899,13 @@ static void su_admin_op_cb(SaImmOiHandle > } > } > > + /* Avoid if any single Csi assignment is undergoing on SG. */ > + if (csi_assignment_validate(su->sg_of_su) == true) { > + rc = SA_AIS_ERR_TRY_AGAIN; > + LOG_WA("Single Csi assignment undergoing on (sg'%s')", > su->sg_of_su->name.value); > + goto done; > + } > + > if (su->sg_of_su->sg_fsm_state != AVD_SG_FSM_STABLE) { > rc = SA_AIS_ERR_TRY_AGAIN; > LOG_WA("SG state is not stable"); /* whatever that means... */ > diff --git a/osaf/services/saf/avsv/avd/include/avd_csi.h > b/osaf/services/saf/avsv/avd/include/avd_csi.h > --- a/osaf/services/saf/avsv/avd/include/avd_csi.h > +++ b/osaf/services/saf/avsv/avd/include/avd_csi.h > @@ -159,5 +159,6 @@ extern void avd_compcsi_from_csi_and_sus extern > void avd_csi_delete(struct avd_csi_tag *csi); extern void > csi_cmplt_delete(struct avd_csi_tag *csi, SaBoolT ckpt); extern > AVD_CSI *csi_create(const SaNameT *csi_name); > +extern bool csi_assignment_validate(struct avd_sg_tag *sg); > > #endif > > ---------------------------------------------------------------------- > -------- DreamFactory - Open Source REST & JSON Services for HTML5 & > Native Apps OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API > Access Free app hosting. Or install the open source package on any LAMP > server. > Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native! > http://pubads.g.doubleclick.net/gampad/clk?id=63469471&iu=/4140/ostg.c > lktrk _______________________________________________ > Opensaf-devel mailing list > Opensaf-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/opensaf-devel > > ------------------------------------------------------------------------------ Shape the Mobile Experience: Free Subscription Software experts and developers: Be at the forefront of tech innovation. Intel(R) Software Adrenaline delivers strategic insight and game-changing conversations that shape the rapidly evolving mobile landscape. Sign up now. http://pubads.g.doubleclick.net/gampad/clk?id=63431311&iu=/4140/ostg.clktrk _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel