And here's a patch that actually works (previous one didn't). Tested with 
various CSI add/remove for PI/NPI comps. Please test and comment.

If avd_sg_su_oper_list_add() instead was called from inside avd_snd_susi_msg() 
it would save some lines here and there.

/Hans

> -----Original Message-----
> From: Hans Feldt [mailto:[email protected]]
> Sent: den 20 november 2013 15:41
> To: Nagendra Kumar; Hans Nordebäck
> Cc: [email protected]
> Subject: Re: [devel] [PATCH 1 of 1] amfd: Reject admin op if csi add/remove 
> is in progress [#627]
> 
> I think SG FSM state "SU OPER" should be used for this purpose. Could you 
> please test attached patch?
> It fits better into the code and no new checks needs to be added into admin 
> op handling
> Thanks,
> Hans
> 
> > -----Original Message-----
> > From: Nagendra Kumar [mailto:[email protected]]
> > Sent: den 20 november 2013 14:25
> > To: Hans Feldt; Hans Nordebäck
> > Cc: [email protected]
> > Subject: RE: [devel] [PATCH 1 of 1] amfd: Reject admin op if csi add/remove 
> > is in progress [#627]
> >
> > 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:[email protected]]
> > Sent: 20 November 2013 18:33
> > To: Nagendra Kumar; [email protected]
> > Cc: [email protected]
> > 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: [email protected]; [email protected]
> > > Cc: [email protected]
> > > 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
> > > [email protected]
> > > https://lists.sourceforge.net/lists/listinfo/opensaf-devel
> > >
> > >

Attachment: t627
Description: t627

------------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to