See inline
Thanks,
Hans

> -----Original Message-----
> From: SuryaNarayana Garlapati [mailto:suryanarayana.garlap...@oracle.com]
> Sent: den 4 april 2014 08:29
> To: Hans Feldt
> Cc: Hans Feldt; Hans Nordebäck; praveen malviya; nagendr...@oracle.com; 
> opensaf-devel@lists.sourceforge.net
> Subject: Re: [devel] [PATCH 2 of 5] amfnd: store amfd mds ver [#574]
> 
> Hi Hans,
> Comments/answers inline.
> 
> Regards
> Surya
> On Friday 04 April 2014 11:16 AM, Hans Feldt wrote:
> > Hi,
> > I interpreted your answer such that there are two alternatives:
> > 1) rely on mds sub part version but then I need to handle NEW-ACTIVE or
> > 2) use message format version instead
> >
> > Seems like you had a preference for 2?
> [Surya] Yes, message format should be used and that is the correct way
> to handle this situation.
> >
> > Any alternative seems to require quite a few more changes in amfnd.
> > Alt1 would need add new event event handling in both the mds callback
> > and main thread. Alt2 would require to preserve the message format
> > version all the way to the event handler.
> [Surya] Yes, it is preferred to preserve the message format
> version(variable i_msg_fmt_ver) all the way to event handler.
> >
> > But again the strange thing is that these are not the same formats and
> > there is not much explaining what they are.
> [Surya] I think i had already explained in my earlier emails, but here
> goes the explanation.
> 
>   MDS Service subpart version is the version of a service with which it
> has installed with MDS.
> Message format version is the version with which a message was encoded.
> Such that on the receiving end,
> application uses this message format version and decodes the message
> accordingly.
> >   mds sub part version is 8
> > bits, used at MDS install and service discovery (SVC_EVENT callback).
> [Surya] Yes you are correct.
> > But message format version is 16 bit. Normally (at least in amf)
> > message format version seems to get filled with sub part version so 8
> > bits of it is unused.
> [Surya] Actually there were some limitations with the number of bits
> that were available in the TIPC namesequence bind.
> So it was limited it to 8 bits for the SVC install.
[Hans] But when sending a message is 8 or 16 bits sent across?
We had discussed before if a major/minor scheme could be applied on top of 
this. If 16 bits are sent/received I guess we have the possibility to use the 
unused 8 bits for a minor version?

> >
> > Thanks,
> > Hans
> >
> > On 3 April 2014 13:13, SuryaNarayana Garlapati
> > <suryanarayana.garlap...@oracle.com> wrote:
> >> Comments:
> >> 1. First of all, the mds sub part version should not be stored/used. You
> >> should depend on the message format version as SI rank is being embedded
> >> in the new message(which is being sent from AVD).
> >>    If you have a requirement for usage of message version, you can get it
> >> at runtime when you receive a SUSI message etc. Decode the received
> >> message and use the message format version.
> >> 2.  As per patch, Storage of mds version will happen only once for a
> >> life time. You need to process the NEW-ACTIVE event of MDS as well
> >> which will make sure to store the mds version even after the
> >> failover/switchover.
> >>
> >> Regards
> >> Surya
> >>
> >> On Friday 28 March 2014 06:44 PM, Hans Feldt wrote:
> >>>    osaf/services/saf/avsv/avd/avd_mds.c           |  2 ++
> >>>    osaf/services/saf/avsv/avnd/avnd_di.c          |  1 +
> >>>    osaf/services/saf/avsv/avnd/avnd_mds.c         |  3 +++
> >>>    osaf/services/saf/avsv/avnd/include/avnd_cb.h  |  1 +
> >>>    osaf/services/saf/avsv/avnd/include/avnd_evt.h |  1 +
> >>>    5 files changed, 8 insertions(+), 0 deletions(-)
> >>>
> >>>
> >>> diff --git a/osaf/services/saf/avsv/avd/avd_mds.c 
> >>> b/osaf/services/saf/avsv/avd/avd_mds.c
> >>> --- a/osaf/services/saf/avsv/avd/avd_mds.c
> >>> +++ b/osaf/services/saf/avsv/avd/avd_mds.c
> >>> @@ -414,6 +414,8 @@ static uint32_t avd_mds_svc_evt(MDS_CALL
> >>>                        break;
> >>>
> >>>                case NCSMDS_SVC_ID_AVND:
> >>> +                     // TODO remove, just for test
> >>> +                     LOG_NO("%s: AVND UP version: %u", __FUNCTION__, 
> >>> evt_info->i_rem_svc_pvt_ver);
> >>>                        if (evt_info->i_node_id == cb->node_id_avd) {
> >>>                                AVD_EVT *evt = calloc(1, sizeof(AVD_EVT));
> >>>                                osafassert(evt);
> >>> diff --git a/osaf/services/saf/avsv/avnd/avnd_di.c 
> >>> b/osaf/services/saf/avsv/avnd/avnd_di.c
> >>> --- a/osaf/services/saf/avsv/avnd/avnd_di.c
> >>> +++ b/osaf/services/saf/avsv/avnd/avnd_di.c
> >>> @@ -421,6 +421,7 @@ uint32_t avnd_evt_mds_avd_up_evh(AVND_CB
> >>>
> >>>                /* store the AVD MDS address */
> >>>                cb->avd_dest = evt->info.mds.mds_dest;
> >>> +             cb->avd_mds_ver = evt->info.mds.rem_svc_pvt_ver;
> >>>
> >>>                avnd_send_node_up_msg();
> >>>        }
> >>> diff --git a/osaf/services/saf/avsv/avnd/avnd_mds.c 
> >>> b/osaf/services/saf/avsv/avnd/avnd_mds.c
> >>> --- a/osaf/services/saf/avsv/avnd/avnd_mds.c
> >>> +++ b/osaf/services/saf/avsv/avnd/avnd_mds.c
> >>> @@ -594,8 +594,11 @@ uint32_t avnd_mds_svc_evt(AVND_CB *cb, M
> >>>        case NCSMDS_UP:
> >>>                switch (evt_info->i_svc_id) {
> >>>                case NCSMDS_SVC_ID_AVD:
> >>> +                     // TODO remove, just for test
> >>> +                     LOG_NO("%s: AVD UP version: %u", __FUNCTION__, 
> >>> evt_info->i_rem_svc_pvt_ver);
> >>>                        /* create the mds event */
> >>>                        evt = avnd_evt_create(cb, AVND_EVT_MDS_AVD_UP, 0, 
> >>> &evt_info->i_dest, 0, 0, 0);
> >>> +                     evt->info.mds.rem_svc_pvt_ver = 
> >>> evt_info->i_rem_svc_pvt_ver;
> >>>                        break;
> >>>
> >>>                case NCSMDS_SVC_ID_AVA:
> >>> diff --git a/osaf/services/saf/avsv/avnd/include/avnd_cb.h 
> >>> b/osaf/services/saf/avsv/avnd/include/avnd_cb.h
> >>> --- a/osaf/services/saf/avsv/avnd/include/avnd_cb.h
> >>> +++ b/osaf/services/saf/avsv/avnd/include/avnd_cb.h
> >>> @@ -50,6 +50,7 @@ typedef struct avnd_cb_tag {
> >>>        MDS_DEST avnd_dest;     /* AvND mds addr */
> >>>        MDS_DEST avd_dest;      /* AvD mds addr */
> >>>        bool is_avd_down;       /* Temp: Indicates if AvD went down */
> >>> +     MDS_SVC_PVT_SUB_PART_VER avd_mds_ver; /* Director MDS version */
> >>>
> >>>        /* cb related params */
> >>>        NCS_LOCK lock;          /* cb lock */
> >>> diff --git a/osaf/services/saf/avsv/avnd/include/avnd_evt.h 
> >>> b/osaf/services/saf/avsv/avnd/include/avnd_evt.h
> >>> --- a/osaf/services/saf/avsv/avnd/include/avnd_evt.h
> >>> +++ b/osaf/services/saf/avsv/avnd/include/avnd_evt.h
> >>> @@ -128,6 +128,7 @@ typedef struct avnd_tmr_evt {
> >>>    typedef struct avnd_mds_evt {
> >>>        MDS_DEST mds_dest;      /* mds address */
> >>>        NODE_ID node_id;
> >>> +     MDS_SVC_PVT_SUB_PART_VER rem_svc_pvt_ver;
> >>>    } AVND_MDS_EVT;
> >>>
> >>>    /* HA STATE change event definition */
> >>>
> >>> ------------------------------------------------------------------------------
> >>> _______________________________________________
> >>> Opensaf-devel mailing list
> >>> Opensaf-devel@lists.sourceforge.net
> >>> https://lists.sourceforge.net/lists/listinfo/opensaf-devel
> >>
> >> ------------------------------------------------------------------------------
> >> _______________________________________________
> >> Opensaf-devel mailing list
> >> Opensaf-devel@lists.sourceforge.net
> >> https://lists.sourceforge.net/lists/listinfo/opensaf-devel


------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to