Re: [devel] [PATCH 1 of 1] cpd: syncup active standby mbcsv dtat for non-colcated ckpt above 3 replicas[#2253]

2017-01-17 Thread A V Mahesh
Hi Hoang,

Thanks for the comments i will incorporate these two comments while pushing.

-AVM


On 1/18/2017 10:17 AM, Vo Minh Hoang wrote:
> Dear Mahesh,
>
> I have 2 comments.
> Please find with [Hoang] tag and consider.
>
> Sincerely,
> Hoang
>
> -Original Message-
> From: mahesh.va...@oracle.com [mailto:mahesh.va...@oracle.com]
> Sent: Friday, January 6, 2017 7:17 PM
> To: hoang.m...@dektech.com.au
> Cc: opensaf-devel@lists.sourceforge.net
> Subject: [PATCH 1 of 1] cpd: syncup active standby mbcsv dtat for
> non-colcated ckpt above 3 replicas[#2253]
>
>   src/ckpt/ckptd/cpd_sbevt.c |  30 +-
>   1 files changed, 21 insertions(+), 9 deletions(-)
>
>
> Issue :According to Ckpt non-collocated ckpt
> implementation the cluster can have max 3 replicas
>and minimum of 2 replicas,if the non-collocated
> ckpt is opened on controller initially ,
>by default cpsv service will create 2 replicas
> each one on controllers ,
>else the non-collocated ckpt is opened on payload
> initially,by default cpsv service will create 3 replicas
>one on the payload and other each one on
> controllers,so any further opens form any other payload is not
>required to create replicas  locally.All other
> node ckpt application will access the data form the
>default created active replica.
>
>   In current code ha bug in active standby MBCSV
> checkpoint of CPD_CKPT_REF_INFO data is mismatching
>   while creating replica node for  non-collocated of
> a payload
>
> Fix : This patch address the issue by  matching
> CPD_CKPT_REF_INFO data by not crating
>  cpd_ckpt_reploc_node  cpd_ckpt_ref_info , for the
> any further opens
>  form any other payload opened the ckpt above max 3
> replicas.
>
> diff --git a/src/ckpt/ckptd/cpd_sbevt.c b/src/ckpt/ckptd/cpd_sbevt.c
> --- a/src/ckpt/ckptd/cpd_sbevt.c
> +++ b/src/ckpt/ckptd/cpd_sbevt.c
> @@ -456,6 +456,7 @@ uint32_t cpd_sb_proc_ckpt_dest_add(CPD_C
>   SaClmClusterNodeT cluster_node;
>   CPD_REP_KEY_INFO key_info;
>   CPD_NODE_REF_INFO *nref_info;
> + bool noncoll_rep_on_payload = false;
>   
>   TRACE_ENTER();
>   
> @@ -497,9 +498,20 @@ uint32_t cpd_sb_proc_ckpt_dest_add(CPD_C
>   
>   reploc_info->rep_key.node_name =
> strdup(osaf_extended_name_borrow(_node.nodeName));
>   reploc_info->rep_key.ckpt_name =
> strdup(ckpt_node->ckpt_name);
> - if
> (!m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(_node->attributes))
> + if
> (!m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(_node->attributes)) {
>   reploc_info->rep_type = REP_NONCOLL;
> - else {
> + if
> ((cpd_get_slot_sub_id_from_mds_dest(msg->info.dest_add.mds_dest) ==
> cb->cpd_remote_id) ||
> +
> (cpd_get_slot_sub_id_from_mds_dest(msg->info.dest_add.mds_dest) ==
> cb->cpd_self_id) ) {
> + TRACE_4(" reploc node add for
> non-collocated on controller ckpt_id:%llx", msg->info.dest_add.ckpt_id);
> + proc_rc =
> cpd_ckpt_reploc_node_add(>ckpt_reploc_tree, reploc_info, cb->ha_state,
> cb->immOiHandle);
> + if (proc_rc != NCSCC_RC_SUCCESS) {
> + TRACE_4("cpd standby dest add evt
> failed ");
> [Hoang] reploc_info is malloc in this scope, should free it here to avoid
> mem leak. So do LOC: 511 and 529.
> + }
> + } else {
> + TRACE_4(" reploc node add for
> non-collocated on paylaod ckpt_id:%llx",msg->info.dest_add.ckpt_id);
> [Hoang] consider changing trace message when we do not add anything here.
> Small typos " paylaod ".
> + noncoll_rep_on_payload = true;
> + }
> + } else {
>   if ((ckpt_node->attributes.creationFlags &
> SA_CKPT_WR_ALL_REPLICAS) &&
>   
> (m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(_node->attributes)))
>   reploc_info->rep_type = REP_SYNCUPD; @@
> -511,17 +523,17 @@ uint32_t cpd_sb_proc_ckpt_dest_add(CPD_C
>   if ((ckpt_node->attributes.creationFlags &
> SA_CKPT_WR_ACTIVE_REPLICA_WEAK) &&
>   
> (m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(_node->attributes)))
>   reploc_info->rep_type = REP_NOTACTIVE;
> - }
>   
> - proc_rc = cpd_ckpt_reploc_node_add(>ckpt_reploc_tree,
> reploc_info, cb->ha_state, cb->immOiHandle);
> - if (proc_rc != NCSCC_RC_SUCCESS) {
> - TRACE_4("cpd standby dest add evt failed ");
> - /*  goto free_mem; */
> + proc_rc =
> 

Re: [devel] [PATCH 1 of 1] cpd: syncup active standby mbcsv dtat for non-colcated ckpt above 3 replicas[#2253]

2017-01-17 Thread Vo Minh Hoang
Dear Mahesh,

I have 2 comments.
Please find with [Hoang] tag and consider.

Sincerely,
Hoang

-Original Message-
From: mahesh.va...@oracle.com [mailto:mahesh.va...@oracle.com] 
Sent: Friday, January 6, 2017 7:17 PM
To: hoang.m...@dektech.com.au
Cc: opensaf-devel@lists.sourceforge.net
Subject: [PATCH 1 of 1] cpd: syncup active standby mbcsv dtat for
non-colcated ckpt above 3 replicas[#2253]

 src/ckpt/ckptd/cpd_sbevt.c |  30 +-
 1 files changed, 21 insertions(+), 9 deletions(-)


Issue :According to Ckpt non-collocated ckpt
implementation the cluster can have max 3 replicas
  and minimum of 2 replicas,if the non-collocated
ckpt is opened on controller initially ,
  by default cpsv service will create 2 replicas
each one on controllers ,
  else the non-collocated ckpt is opened on payload
initially,by default cpsv service will create 3 replicas
  one on the payload and other each one on
controllers,so any further opens form any other payload is not
  required to create replicas  locally.All other
node ckpt application will access the data form the
  default created active replica.

 In current code ha bug in active standby MBCSV
checkpoint of CPD_CKPT_REF_INFO data is mismatching
 while creating replica node for  non-collocated of
a payload

Fix : This patch address the issue by  matching
CPD_CKPT_REF_INFO data by not crating
cpd_ckpt_reploc_node  cpd_ckpt_ref_info , for the
any further opens
form any other payload opened the ckpt above max 3
replicas.

diff --git a/src/ckpt/ckptd/cpd_sbevt.c b/src/ckpt/ckptd/cpd_sbevt.c
--- a/src/ckpt/ckptd/cpd_sbevt.c
+++ b/src/ckpt/ckptd/cpd_sbevt.c
@@ -456,6 +456,7 @@ uint32_t cpd_sb_proc_ckpt_dest_add(CPD_C
SaClmClusterNodeT cluster_node;
CPD_REP_KEY_INFO key_info;
CPD_NODE_REF_INFO *nref_info;
+   bool noncoll_rep_on_payload = false;
 
TRACE_ENTER();
 
@@ -497,9 +498,20 @@ uint32_t cpd_sb_proc_ckpt_dest_add(CPD_C
 
reploc_info->rep_key.node_name =
strdup(osaf_extended_name_borrow(_node.nodeName));
reploc_info->rep_key.ckpt_name =
strdup(ckpt_node->ckpt_name);
-   if
(!m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(_node->attributes))
+   if
(!m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(_node->attributes)) {
reploc_info->rep_type = REP_NONCOLL;
-   else {
+   if
((cpd_get_slot_sub_id_from_mds_dest(msg->info.dest_add.mds_dest) ==
cb->cpd_remote_id) ||
+
(cpd_get_slot_sub_id_from_mds_dest(msg->info.dest_add.mds_dest) ==
cb->cpd_self_id) ) {
+   TRACE_4(" reploc node add for
non-collocated on controller ckpt_id:%llx", msg->info.dest_add.ckpt_id);
+   proc_rc =
cpd_ckpt_reploc_node_add(>ckpt_reploc_tree, reploc_info, cb->ha_state,
cb->immOiHandle);
+   if (proc_rc != NCSCC_RC_SUCCESS) {
+   TRACE_4("cpd standby dest add evt
failed ");
[Hoang] reploc_info is malloc in this scope, should free it here to avoid
mem leak. So do LOC: 511 and 529.
+   }
+   } else {
+   TRACE_4(" reploc node add for
non-collocated on paylaod ckpt_id:%llx",msg->info.dest_add.ckpt_id);
[Hoang] consider changing trace message when we do not add anything here.
Small typos " paylaod ".
+   noncoll_rep_on_payload = true;
+   }
+   } else {
if ((ckpt_node->attributes.creationFlags &
SA_CKPT_WR_ALL_REPLICAS) &&
 
(m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(_node->attributes)))
reploc_info->rep_type = REP_SYNCUPD; @@
-511,17 +523,17 @@ uint32_t cpd_sb_proc_ckpt_dest_add(CPD_C
if ((ckpt_node->attributes.creationFlags &
SA_CKPT_WR_ACTIVE_REPLICA_WEAK) &&
 
(m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(_node->attributes)))
reploc_info->rep_type = REP_NOTACTIVE;
-   }
 
-   proc_rc = cpd_ckpt_reploc_node_add(>ckpt_reploc_tree,
reploc_info, cb->ha_state, cb->immOiHandle);
-   if (proc_rc != NCSCC_RC_SUCCESS) {
-   TRACE_4("cpd standby dest add evt failed ");
-   /*  goto free_mem; */
+   proc_rc =
cpd_ckpt_reploc_node_add(>ckpt_reploc_tree, reploc_info, cb->ha_state,
cb->immOiHandle);
+   if (proc_rc != NCSCC_RC_SUCCESS) {
+   TRACE_4("cpd standby dest add evt failed
");
+   }
}
}
 
-   cpd_ckpt_ref_info_add(node_info, ckpt_node);
-   
+   if 

[devel] [PATCH 1 of 1] AMFD: Refactor to remove macro m_AVD_SET_SG_FSM [#1945]

2017-01-17 Thread Minh Hon Chau
 src/amf/amfd/role.cc   |2 +-
 src/amf/amfd/sg.h  |1 -
 src/amf/amfd/sg_2n_fsm.cc  |  142 
 src/amf/amfd/sg_npm_fsm.cc |  138 +++---
 src/amf/amfd/sg_nway_fsm.cc|  108 +++---
 src/amf/amfd/sg_nwayact_fsm.cc |   80 +++---
 src/amf/amfd/si.cc |6 +-
 src/amf/amfd/si_dep.cc |   10 +-
 8 files changed, 243 insertions(+), 244 deletions(-)


AMFD currently is using both m_AVD_SET_SG_FSM and set_fsm_state(),
this patch removes m_AVD_SET_SG_FSM

diff --git a/src/amf/amfd/role.cc b/src/amf/amfd/role.cc
--- a/src/amf/amfd/role.cc
+++ b/src/amf/amfd/role.cc
@@ -676,7 +676,7 @@ void avd_role_switch_ncs_su_evh(AVD_CL_C
} else {
avd_sg_su_oper_list_add(cb, i_su, false);
i_su->set_su_switch(AVSV_SI_TOGGLE_SWITCH);
-   m_AVD_SET_SG_FSM(cb, (i_su->sg_of_su), 
AVD_SG_FSM_SU_OPER);
+   
i_su->sg_of_su->set_fsm_state(AVD_SG_FSM_SU_OPER);
}
}
}
diff --git a/src/amf/amfd/sg.h b/src/amf/amfd/sg.h
--- a/src/amf/amfd/sg.h
+++ b/src/amf/amfd/sg.h
@@ -577,7 +577,6 @@ private:
 };
 
 // TODO(hafe) remove when all code has been changed
-#define m_AVD_SET_SG_FSM(cb,sg,state) (sg)->set_fsm_state(state)
 #define m_AVD_SET_SG_ADMIN_SI(cb,si) (si)->sg_of_si->set_admin_si((si))
 #define m_AVD_CLEAR_SG_ADMIN_SI(cb,sg) (sg)->clear_admin_si()
 #define m_AVD_CHK_OPLIST(i_su,flag) (flag) = 
(i_su)->sg_of_su->in_su_oper_list(i_su)
diff --git a/src/amf/amfd/sg_2n_fsm.cc b/src/amf/amfd/sg_2n_fsm.cc
--- a/src/amf/amfd/sg_2n_fsm.cc
+++ b/src/amf/amfd/sg_2n_fsm.cc
@@ -735,7 +735,7 @@ uint32_t SG_2N::si_assign(AVD_CL_CB *cb,
/* Add the SU to the list and change the FSM state */
avd_sg_su_oper_list_add(cb, l_su, false);
 
-   m_AVD_SET_SG_FSM(cb, (si->sg_of_si), AVD_SG_FSM_SG_REALIGN);
+   si->sg_of_si->set_fsm_state(AVD_SG_FSM_SG_REALIGN);
 
 done:
TRACE_LEAVE();
@@ -778,7 +778,7 @@ SaAisErrorT SG_2N::si_swap(AVD_SI *si, S
 
/* Add the SU to the operation list and change the SG state to 
SU_operation. */
avd_sg_su_oper_list_add(avd_cb, susi->su, false);
-   m_AVD_SET_SG_FSM(avd_cb, susi->su->sg_of_su, AVD_SG_FSM_SU_OPER);
+   susi->su->sg_of_su->set_fsm_state(AVD_SG_FSM_SU_OPER);
susi->su->set_su_switch(AVSV_SI_TOGGLE_SWITCH);
si->invocation = invocation;
 
@@ -867,7 +867,7 @@ uint32_t SG_2N::su_fault_su_oper(AVD_SU 
 
/* add the SU to the operation list and change the SG 
FSM to SG realign. */
avd_sg_su_oper_list_add(cb, su, false);
-   m_AVD_SET_SG_FSM(cb, this, AVD_SG_FSM_SG_REALIGN);
+   set_fsm_state(AVD_SG_FSM_SG_REALIGN);
 
/* if the other SUs switch field is true, it is in 
service, 
 * having quiesced assigning state Send 
D2N-INFO_SU_SI_ASSIGN modify 
@@ -925,7 +925,7 @@ uint32_t SG_2N::su_fault_su_oper(AVD_SU 
 
/* add the SU to the operation list and change the SG 
FSM to SG realign. */
avd_sg_su_oper_list_add(cb, su, false);
-   m_AVD_SET_SG_FSM(cb, this, AVD_SG_FSM_SG_REALIGN);
+   set_fsm_state(AVD_SG_FSM_SG_REALIGN);
 
/* If the other SUs switch field is true, it is in 
service, 
 * having quiesced assigned state Change switch field 
to false.
@@ -996,7 +996,7 @@ uint32_t SG_2N::su_fault_si_oper(AVD_SU 

m_AVD_CLEAR_SG_ADMIN_SI(cb, (su->sg_of_su));
avd_sg_su_oper_list_add(cb, su, false);
-   m_AVD_SET_SG_FSM(cb, (su->sg_of_su), 
AVD_SG_FSM_SU_OPER);
+   su->sg_of_su->set_fsm_state(AVD_SG_FSM_SU_OPER);
} else {
/* The SU has standby assignments. Send 
D2N-INFO_SU_SI_ASSIGN
 * with remove all to the SU. 
@@ -1052,7 +1052,7 @@ uint32_t SG_2N::su_fault_si_oper(AVD_SU 

su->sg_of_su->admin_si->set_admin_state(SA_AMF_ADMIN_UNLOCKED);
m_AVD_CLEAR_SG_ADMIN_SI(cb, (su->sg_of_su));
avd_sg_su_oper_list_add(cb, su, false);
-   m_AVD_SET_SG_FSM(cb, (su->sg_of_su), 
AVD_SG_FSM_SU_OPER);
+   su->sg_of_su->set_fsm_state(AVD_SG_FSM_SU_OPER);
} else {
/* The SU has standby assignments. Change the 
SI admin state to
 * unlock. Remove the SI from the SI admin 
pointer. 
@@ 

[devel] [PATCH 0 of 1] Review Request for AMFD: Refactor to remove macro m_AVD_SET_SG_FSM [#1945]

2017-01-17 Thread Minh Hon Chau
Summary: AMFD: Refactor to remove macro m_AVD_SET_SG_FSM [#1945]
Review request for Trac Ticket(s): 1945
Peer Reviewer(s): AMF devs
Pull request to: <>
Affected branch(es): default
Development branch: default


Impacted area   Impact y/n

 Docsn
 Build systemn
 RPM/packaging   n
 Configuration files n
 Startup scripts n
 SAF servicesy
 OpenSAF servicesn
 Core libraries  n
 Samples n
 Tests   n
 Other   n


Comments (indicate scope for each "y" above):
-
 <>

changeset d9d59bb0815d50b512281d5771c893c806e4d60b
Author: Minh Hon Chau 
Date:   Wed, 18 Jan 2017 15:17:52 +1100

AMFD: Refactor to remove macro m_AVD_SET_SG_FSM [#1945]

AMFD currently is using both m_AVD_SET_SG_FSM and set_fsm_state(), this
patch removes m_AVD_SET_SG_FSM


Complete diffstat:
--
 src/amf/amfd/role.cc   |2 +-
 src/amf/amfd/sg.h  |1 -
 src/amf/amfd/sg_2n_fsm.cc  |  142 

 src/amf/amfd/sg_npm_fsm.cc |  138 
++--
 src/amf/amfd/sg_nway_fsm.cc|  108 

 src/amf/amfd/sg_nwayact_fsm.cc |   80 
+++---
 src/amf/amfd/si.cc |6 ++--
 src/amf/amfd/si_dep.cc |   10 +++---
 8 files changed, 243 insertions(+), 244 deletions(-)


Testing Commands:
-
 <>


Testing, Expected Results:
--
 <>


Conditions of Submission:
-
 Ack from reviewers


Arch  Built StartedLinux distro
---
mipsn  n
mips64  n  n
x86 n  n
x86_64  y  y
powerpc n  n
powerpc64   n  n


Reviewer Checklist:
---
[Submitters: make sure that your review doesn't trigger any checkmarks!]


Your checkin has not passed review because (see checked entries):

___ Your RR template is generally incomplete; it has too many blank entries
that need proper data filled in.

___ You have failed to nominate the proper persons for review and push.

___ Your patches do not have proper short+long header

___ You have grammar/spelling in your header that is unacceptable.

___ You have exceeded a sensible line length in your headers/comments/text.

___ You have failed to put in a proper Trac Ticket # into your commits.

___ You have incorrectly put/left internal data in your comments/files
(i.e. internal bug tracking tool IDs, product names etc)

___ You have not given any evidence of testing beyond basic build tests.
Demonstrate some level of runtime or other sanity testing.

___ You have ^M present in some of your files. These have to be removed.

___ You have needlessly changed whitespace or added whitespace crimes
like trailing spaces, or spaces before tabs.

___ You have mixed real technical changes with whitespace and other
cosmetic code cleanup changes. These have to be separate commits.

___ You need to refactor your submission into logical chunks; there is
too much content into a single commit.

___ You have extraneous garbage in your review (merge commits etc)

___ You have giant attachments which should never have been sent;
Instead you should place your content in a public tree to be pulled.

___ You have too many commits attached to an e-mail; resend as threaded
commits, or place in a public tree for a pull.

___ You have resent this content multiple times without a clear indication
of what has changed between each re-send.

___ You have failed to adequately and individually address all of the
comments and change requests that were proposed in the initial review.

___ You have a misconfigured ~/.hgrc file (i.e. username, email etc)

___ Your computer have a badly configured date and time; confusing the
the threaded patch review.

___ Your changes affect IPC mechanism, and you don't present any results
for in-service upgradability test.

___ Your changes affect user manual and documentation, your patch series
do not contain the patch that updates the Doxygen manual.


--
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel


Re: [devel] [PATCH 1 of 1] cpd: syncup active standby mbcsv dtat for non-colcated ckpt above 3 replicas[#2253]

2017-01-17 Thread A V Mahesh

Hi Hoang

I just cloned http://hg.code.sf.net/p/opensaf/staging and applied ,
dint find nay issue  , so attaching the patch for your reference .
let me know if you still find the issue , i will republish the patch.

-AVM

On 1/18/2017 9:12 AM, Vo Minh Hoang wrote:

Dear Mahesh,

Would you please rebase this patch, it seems a little bit out date.
---
patching file src/ckpt/ckptd/cpd_sbevt.c
Hunk #2 FAILED at 497
Hunk #3 FAILED at 511
2 out of 3 hunks FAILED
---

Sincerely,
Hoang

-Original Message-
From: A V Mahesh [mailto:mahesh.va...@oracle.com]
Sent: Tuesday, January 17, 2017 10:45 AM
To: hoang.m...@dektech.com.au
Cc: opensaf-devel@lists.sourceforge.net
Subject: Re: [devel] [PATCH 1 of 1] cpd: syncup active standby mbcsv dtat
for non-colcated ckpt above 3 replicas[#2253]

Hi Hoang,

It seem you missed to see this, can you please review.

-AVM


On 1/6/2017 5:47 PM, mahesh.va...@oracle.com wrote:

   src/ckpt/ckptd/cpd_sbevt.c |  30 +-
   1 files changed, 21 insertions(+), 9 deletions(-)


Issue :According to Ckpt non-collocated ckpt

implementation the cluster can have max 3 replicas

and minimum of 2 replicas,if the non-collocated

ckpt is opened on controller initially ,

by default cpsv service will create 2 replicas

each one on controllers ,

else the non-collocated ckpt is opened on

payload initially,by default cpsv service will create 3 replicas

one on the payload and other each one on

controllers,so any further opens form any other payload is not

required to create replicas  locally.All other

node ckpt application will access the data form the

default created active replica.

   In current code ha bug in active standby MBCSV

checkpoint of CPD_CKPT_REF_INFO data is mismatching

   while creating replica node for
non-collocated of a payload

Fix : This patch address the issue by  matching

CPD_CKPT_REF_INFO data by not crating

  cpd_ckpt_reploc_node  cpd_ckpt_ref_info , for the

any further opens

  form any other payload opened the ckpt above max

3 replicas.

diff --git a/src/ckpt/ckptd/cpd_sbevt.c b/src/ckpt/ckptd/cpd_sbevt.c
--- a/src/ckpt/ckptd/cpd_sbevt.c
+++ b/src/ckpt/ckptd/cpd_sbevt.c
@@ -456,6 +456,7 @@ uint32_t cpd_sb_proc_ckpt_dest_add(CPD_C
SaClmClusterNodeT cluster_node;
CPD_REP_KEY_INFO key_info;
CPD_NODE_REF_INFO *nref_info;
+   bool noncoll_rep_on_payload = false;
   
   	TRACE_ENTER();
   
@@ -497,9 +498,20 @@ uint32_t cpd_sb_proc_ckpt_dest_add(CPD_C
   
   		reploc_info->rep_key.node_name =

strdup(osaf_extended_name_borrow(_node.nodeName));

reploc_info->rep_key.ckpt_name =

strdup(ckpt_node->ckpt_name);

-   if

(!m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(_node->attributes))

+   if

(!m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(_node->attributes)) {

reploc_info->rep_type = REP_NONCOLL;
-   else {
+   if

((cpd_get_slot_sub_id_from_mds_dest(msg->info.dest_add.mds_dest) ==
cb->cpd_remote_id) ||

+

(cpd_get_slot_sub_id_from_mds_dest(msg->info.dest_add.mds_dest) ==
cb->cpd_self_id) ) {

+   TRACE_4(" reploc node add for non-collocated

on controller ckpt_id:%llx", msg->info.dest_add.ckpt_id);

+   proc_rc =

cpd_ckpt_reploc_node_add(>ckpt_reploc_tree, reploc_info, cb->ha_state,
cb->immOiHandle);

+   if (proc_rc != NCSCC_RC_SUCCESS) {
+   TRACE_4("cpd standby dest add evt

failed ");

+   }
+   } else {
+   TRACE_4(" reploc node add for non-collocated

on paylaod ckpt_id:%llx",msg->info.dest_add.ckpt_id);

+   noncoll_rep_on_payload = true;
+   }
+   } else {
if ((ckpt_node->attributes.creationFlags &

SA_CKPT_WR_ALL_REPLICAS) &&
(m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(_node->attributes)))

reploc_info->rep_type = REP_SYNCUPD; @@

-511,17 +523,17 @@

uint32_t cpd_sb_proc_ckpt_dest_add(CPD_C
if ((ckpt_node->attributes.creationFlags &

SA_CKPT_WR_ACTIVE_REPLICA_WEAK) &&
(m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(_node->attributes)))

reploc_info->rep_type = REP_NOTACTIVE;
-   }
   
-		proc_rc = cpd_ckpt_reploc_node_add(>ckpt_reploc_tree,

reploc_info, cb->ha_state, cb->immOiHandle);

-   if (proc_rc != NCSCC_RC_SUCCESS) {
-  

Re: [devel] [PATCH 1 of 1] cpd: syncup active standby mbcsv dtat for non-colcated ckpt above 3 replicas[#2253]

2017-01-17 Thread Vo Minh Hoang
Dear Mahesh,

Would you please rebase this patch, it seems a little bit out date.
---
patching file src/ckpt/ckptd/cpd_sbevt.c
Hunk #2 FAILED at 497
Hunk #3 FAILED at 511
2 out of 3 hunks FAILED
---

Sincerely,
Hoang

-Original Message-
From: A V Mahesh [mailto:mahesh.va...@oracle.com] 
Sent: Tuesday, January 17, 2017 10:45 AM
To: hoang.m...@dektech.com.au
Cc: opensaf-devel@lists.sourceforge.net
Subject: Re: [devel] [PATCH 1 of 1] cpd: syncup active standby mbcsv dtat
for non-colcated ckpt above 3 replicas[#2253]

Hi Hoang,

It seem you missed to see this, can you please review.

-AVM


On 1/6/2017 5:47 PM, mahesh.va...@oracle.com wrote:
>   src/ckpt/ckptd/cpd_sbevt.c |  30 +-
>   1 files changed, 21 insertions(+), 9 deletions(-)
>
>
> Issue :According to Ckpt non-collocated ckpt
implementation the cluster can have max 3 replicas
>and minimum of 2 replicas,if the non-collocated
ckpt is opened on controller initially ,
>by default cpsv service will create 2 replicas
each one on controllers ,
>else the non-collocated ckpt is opened on
payload initially,by default cpsv service will create 3 replicas
>one on the payload and other each one on
controllers,so any further opens form any other payload is not
>required to create replicas  locally.All other
node ckpt application will access the data form the
>default created active replica.
>
>   In current code ha bug in active standby MBCSV
checkpoint of CPD_CKPT_REF_INFO data is mismatching
>   while creating replica node for  
> non-collocated of a payload
>
> Fix : This patch address the issue by  matching
CPD_CKPT_REF_INFO data by not crating
>  cpd_ckpt_reploc_node  cpd_ckpt_ref_info , for the
any further opens
>  form any other payload opened the ckpt above max
3 replicas.
>
> diff --git a/src/ckpt/ckptd/cpd_sbevt.c b/src/ckpt/ckptd/cpd_sbevt.c
> --- a/src/ckpt/ckptd/cpd_sbevt.c
> +++ b/src/ckpt/ckptd/cpd_sbevt.c
> @@ -456,6 +456,7 @@ uint32_t cpd_sb_proc_ckpt_dest_add(CPD_C
>   SaClmClusterNodeT cluster_node;
>   CPD_REP_KEY_INFO key_info;
>   CPD_NODE_REF_INFO *nref_info;
> + bool noncoll_rep_on_payload = false;
>   
>   TRACE_ENTER();
>   
> @@ -497,9 +498,20 @@ uint32_t cpd_sb_proc_ckpt_dest_add(CPD_C
>   
>   reploc_info->rep_key.node_name =
strdup(osaf_extended_name_borrow(_node.nodeName));
>   reploc_info->rep_key.ckpt_name =
strdup(ckpt_node->ckpt_name);
> - if
(!m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(_node->attributes))
> + if
(!m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(_node->attributes)) {
>   reploc_info->rep_type = REP_NONCOLL;
> - else {
> + if
((cpd_get_slot_sub_id_from_mds_dest(msg->info.dest_add.mds_dest) ==
cb->cpd_remote_id) ||
> +
(cpd_get_slot_sub_id_from_mds_dest(msg->info.dest_add.mds_dest) ==
cb->cpd_self_id) ) {
> + TRACE_4(" reploc node add for non-collocated
on controller ckpt_id:%llx", msg->info.dest_add.ckpt_id);
> + proc_rc =
cpd_ckpt_reploc_node_add(>ckpt_reploc_tree, reploc_info, cb->ha_state,
cb->immOiHandle);
> + if (proc_rc != NCSCC_RC_SUCCESS) {
> + TRACE_4("cpd standby dest add evt
failed ");
> + }
> + } else {
> + TRACE_4(" reploc node add for non-collocated
on paylaod ckpt_id:%llx",msg->info.dest_add.ckpt_id);
> + noncoll_rep_on_payload = true;
> + }
> + } else {
>   if ((ckpt_node->attributes.creationFlags &
SA_CKPT_WR_ALL_REPLICAS) &&
>
(m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(_node->attributes)))
>   reploc_info->rep_type = REP_SYNCUPD; @@
-511,17 +523,17 @@ 
> uint32_t cpd_sb_proc_ckpt_dest_add(CPD_C
>   if ((ckpt_node->attributes.creationFlags &
SA_CKPT_WR_ACTIVE_REPLICA_WEAK) &&
>
(m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(_node->attributes)))
>   reploc_info->rep_type = REP_NOTACTIVE;
> - }
>   
> - proc_rc = cpd_ckpt_reploc_node_add(>ckpt_reploc_tree,
reploc_info, cb->ha_state, cb->immOiHandle);
> - if (proc_rc != NCSCC_RC_SUCCESS) {
> - TRACE_4("cpd standby dest add evt failed ");
> - /*  goto free_mem; */
> + proc_rc =
cpd_ckpt_reploc_node_add(>ckpt_reploc_tree, reploc_info, cb->ha_state,
cb->immOiHandle);
> +

[devel] [PATCH 0 of 1] Review Request for AMFD: Refactor to read sg headless cached rta [#1945]

2017-01-17 Thread Minh Hon Chau
Summary: AMFD: Refactor to read sg headless cached rta [#1945]
Review request for Trac Ticket(s): 1945
Peer Reviewer(s): AMF devs
Pull request to: <>
Affected branch(es): 5.1, default
Development branch: default


Impacted area   Impact y/n

 Docsn
 Build systemn
 RPM/packaging   n
 Configuration files n
 Startup scripts n
 SAF servicesy
 OpenSAF servicesn
 Core libraries  n
 Samples n
 Tests   n
 Other   n


Comments (indicate scope for each "y" above):
-
 <>

changeset dc873bcf64a12436668fec1ac56652b418e4e9f1
Author: Minh Hon Chau 
Date:   Wed, 18 Jan 2017 14:15:19 +1100

AMFD: Refactor to read sg headless cached rta [#1945]

The patch #2112 has been pushed that makes both amfds as earlier
applier/implementer, so there's no need to add
avd_sg_read_headless_fsm_state_cached_rta which was introduced in ticket
#1987


Complete diffstat:
--
 src/amf/amfd/ndfsm.cc |   4 +---
 src/amf/amfd/sg.cc|  71 
+++
 src/amf/amfd/sg.h |   3 +--
 3 files changed, 13 insertions(+), 65 deletions(-)


Testing Commands:
-
 <>


Testing, Expected Results:
--
 <>


Conditions of Submission:
-
 Ack from reviewers


Arch  Built StartedLinux distro
---
mipsn  n
mips64  n  n
x86 n  n
x86_64  y  y
powerpc n  n
powerpc64   n  n


Reviewer Checklist:
---
[Submitters: make sure that your review doesn't trigger any checkmarks!]


Your checkin has not passed review because (see checked entries):

___ Your RR template is generally incomplete; it has too many blank entries
that need proper data filled in.

___ You have failed to nominate the proper persons for review and push.

___ Your patches do not have proper short+long header

___ You have grammar/spelling in your header that is unacceptable.

___ You have exceeded a sensible line length in your headers/comments/text.

___ You have failed to put in a proper Trac Ticket # into your commits.

___ You have incorrectly put/left internal data in your comments/files
(i.e. internal bug tracking tool IDs, product names etc)

___ You have not given any evidence of testing beyond basic build tests.
Demonstrate some level of runtime or other sanity testing.

___ You have ^M present in some of your files. These have to be removed.

___ You have needlessly changed whitespace or added whitespace crimes
like trailing spaces, or spaces before tabs.

___ You have mixed real technical changes with whitespace and other
cosmetic code cleanup changes. These have to be separate commits.

___ You need to refactor your submission into logical chunks; there is
too much content into a single commit.

___ You have extraneous garbage in your review (merge commits etc)

___ You have giant attachments which should never have been sent;
Instead you should place your content in a public tree to be pulled.

___ You have too many commits attached to an e-mail; resend as threaded
commits, or place in a public tree for a pull.

___ You have resent this content multiple times without a clear indication
of what has changed between each re-send.

___ You have failed to adequately and individually address all of the
comments and change requests that were proposed in the initial review.

___ You have a misconfigured ~/.hgrc file (i.e. username, email etc)

___ Your computer have a badly configured date and time; confusing the
the threaded patch review.

___ Your changes affect IPC mechanism, and you don't present any results
for in-service upgradability test.

___ Your changes affect user manual and documentation, your patch series
do not contain the patch that updates the Doxygen manual.


--
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel


[devel] [PATCH 1 of 1] AMFD: Refactor to read sg headless cached rta [#1945]

2017-01-17 Thread Minh Hon Chau
 src/amf/amfd/ndfsm.cc |   4 +--
 src/amf/amfd/sg.cc|  71 +++---
 src/amf/amfd/sg.h |   3 +-
 3 files changed, 13 insertions(+), 65 deletions(-)


The patch #2112 has been pushed that makes both amfds as
earlier applier/implementer, so there's no need to add
avd_sg_read_headless_fsm_state_cached_rta which was
introduced in ticket #1987

diff --git a/src/amf/amfd/ndfsm.cc b/src/amf/amfd/ndfsm.cc
--- a/src/amf/amfd/ndfsm.cc
+++ b/src/amf/amfd/ndfsm.cc
@@ -133,12 +133,10 @@ void avd_process_state_info_queue(AVD_CL
// Reading sg must be after reading susi
if (found_state_info == true) {
LOG_NO("Enter restore headless cached RTAs from IMM");
-   // Read SG Fsm state to recover nodegroup operation
-   avd_sg_read_headless_fsm_state_cached_rta(cb);
// Read all cached susi, includes ABSENT SUSI with IMM fsm state
avd_susi_read_headless_cached_rta(cb);
// Read SUOperationList, set ABSENT fsm state for ABSENT SUSI
-   avd_sg_read_headless_su_oper_list_cached_rta(cb);
+   avd_sg_read_headless_cached_rta(cb);
// Read SUSwitch of SU, validate toggle depends on SUSI fsm 
state
avd_su_read_headless_cached_rta(cb);
// Clean compcsi object of ABSENT SUSI
diff --git a/src/amf/amfd/sg.cc b/src/amf/amfd/sg.cc
--- a/src/amf/amfd/sg.cc
+++ b/src/amf/amfd/sg.cc
@@ -375,6 +375,15 @@ static AVD_SG *sg_create(const std::stri
if (immutil_getAttr(const_cast("saAmfSGAdminState"), 
attributes, 0, >saAmfSGAdminState) != SA_AIS_OK) {
sg->saAmfSGAdminState = SA_AMF_ADMIN_UNLOCKED;
}
+   // only read SG FSM State for non-ncs SG
+   if (sg_name.find("safApp=OpenSAF") == std::string::npos) {
+   if 
(immutil_getAttr(const_cast("osafAmfSGFsmState"),
+   attributes, 0, >sg_fsm_state) != SA_AIS_OK) 
{
+   sg->sg_fsm_state = AVD_SG_FSM_STABLE;
+   }
+   TRACE("sg_fsm_state(%u) read from osafAmfSGFsmState", 
sg->sg_fsm_state);
+   }
+
/*  TODO use value in type instead? */
sg->sg_redundancy_model = sgt->saAmfSgtRedundancyModel;
 
@@ -422,6 +431,7 @@ SaAisErrorT avd_sg_config_get(const std:
const_cast("saAmfSGSuRestartProb"),
const_cast("saAmfSGSuRestartMax"),
const_cast("saAmfSGAdminState"),
+   const_cast("osafAmfSGFsmState"),
nullptr
};
 
@@ -2098,66 +2108,7 @@ uint32_t AVD_SG::curr_non_instantiated_s
(su->saAmfSUPresenceState == 
SA_AMF_PRESENCE_UNINSTANTIATED));}));  
 }
 
-void avd_sg_read_headless_fsm_state_cached_rta(AVD_CL_CB *cb)
-{
-
-   SaAisErrorT rc;
-   SaImmSearchHandleT searchHandle;
-   SaImmSearchParametersT_2 searchParam;
-
-   SaNameT sg_dn;
-   AVD_SG *sg;
-   const SaImmAttrValuesT_2 **attributes;
-   AVD_SG_FSM_STATE imm_sg_fsm_state;
-   const char *className = "SaAmfSG";
-   const SaImmAttrNameT searchAttributes[] = {
-   const_cast("osafAmfSGFsmState"),
-   NULL
-   };
-
-   TRACE_ENTER();
-
-   osafassert(cb->scs_absence_max_duration > 0);
-
-   searchParam.searchOneAttr.attrName = 
const_cast("SaImmAttrClassName");
-   searchParam.searchOneAttr.attrValueType = SA_IMM_ATTR_SASTRINGT;
-   searchParam.searchOneAttr.attrValue = 
-
-   if ((rc = immutil_saImmOmSearchInitialize_2(cb->immOmHandle, NULL, 
SA_IMM_SUBTREE,
- SA_IMM_SEARCH_ONE_ATTR | SA_IMM_SEARCH_GET_SOME_ATTR, 
,
- searchAttributes, )) != SA_AIS_OK) {
-
-   LOG_ER("%s: saImmOmSearchInitialize_2 failed: %u", 
__FUNCTION__, rc);
-   goto done;
-   }
-
-   while ((rc = immutil_saImmOmSearchNext_2(searchHandle, _dn,
-   (SaImmAttrValuesT_2 ***))) 
== SA_AIS_OK) {
-   sg = sg_db->find(Amf::to_string(_dn));
-   if (sg && sg->sg_ncs_spec == false) {
-   if (sg->headless_validation == false) {
-   continue;
-   }
-   if (sg->any_assignment_in_progress() == false &&
-   sg->any_assignment_assigned() == false) {
-   continue;
-   }
-   // Read sg fsm state
-   rc = 
immutil_getAttr(const_cast("osafAmfSGFsmState"),
-   attributes, 0, _sg_fsm_state);
-   osafassert(rc == SA_AIS_OK);
-   sg->set_fsm_state(imm_sg_fsm_state, false);
-   }
-   }
-
-   (void)immutil_saImmOmSearchFinalize(searchHandle);
-
-done:
-   TRACE_LEAVE();
-
-}
-
-void avd_sg_read_headless_su_oper_list_cached_rta(AVD_CL_CB 

[devel] [PATCH 1 of 1] amfd: change cold sync in progress log message to NOTICE [#2264]

2017-01-17 Thread Gary Lee
 osaf/services/saf/amf/amfd/si.cc |  2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)


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
@@ -1620,7 +1620,7 @@ SaAisErrorT AVD_SI::si_swap_validate()
/* Check whether Amfd is in sync if node is illigible to join. 
*/
if ((avd_cb->node_id_avd_other != 0) && 
(avd_cb->other_avd_adest != 0) &&
(avd_cb->stby_sync_state == 
AVD_STBY_OUT_OF_SYNC)) {
-   LOG_ER("%s SWAP failed - Cold sync in progress", 
name.c_str());
+   LOG_NO("%s SWAP failed - Cold sync in progress", 
name.c_str());
rc = SA_AIS_ERR_TRY_AGAIN;
goto done;
}

--
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel


[devel] [PATCH 1 of 1] amf: support restrictions to auto-repair V3 [#2144]

2017-01-17 Thread Alex Jones
 osaf/libs/common/amf/include/amf_defs.h   |   1 +
 osaf/services/saf/amf/amfd/comp.cc|   2 +-
 osaf/services/saf/amf/amfd/include/su.h   |   3 +-
 osaf/services/saf/amf/amfd/sgproc.cc  |   2 +-
 osaf/services/saf/amf/amfd/su.cc  |  18 ++--
 osaf/services/saf/amf/amfnd/clc.cc|  28 ++
 osaf/services/saf/amf/amfnd/err.cc|  20 +++---
 osaf/services/saf/amf/amfnd/include/avnd_su.h |   2 +
 osaf/services/saf/amf/amfnd/sudb.cc   |   3 ++
 osaf/services/saf/amf/amfnd/susm.cc   |  10 +++-
 10 files changed, 68 insertions(+), 21 deletions(-)


This patch implements section 3.11.1.4.2 of AMF spec (Restrictions to
Auto-Repair).

diff --git a/osaf/libs/common/amf/include/amf_defs.h 
b/osaf/libs/common/amf/include/amf_defs.h
--- a/osaf/libs/common/amf/include/amf_defs.h
+++ b/osaf/libs/common/amf/include/amf_defs.h
@@ -203,6 +203,7 @@ typedef enum
saAmfSUParentSGName_ID = 12,
saAmfSUIsExternal_ID = 13,
saAmfSURestartCount_ID = 14,
+   saAmfSUMaintenanceCampaign_ID = 15,
 } AVSV_AMF_SU_ATTR_ID; 
 
 /* Attribute ID enum for the saAmfComp class */
diff --git a/osaf/services/saf/amf/amfd/comp.cc 
b/osaf/services/saf/amf/amfd/comp.cc
--- a/osaf/services/saf/amf/amfd/comp.cc
+++ b/osaf/services/saf/amf/amfd/comp.cc
@@ -155,7 +155,7 @@ void AVD_COMP::avd_comp_pres_state_set(S
 (saAmfCompPresenceState == 
SA_AMF_PRESENCE_TERMINATION_FAILED)) ||
 ((node->saAmfNodeFailfastOnInstantiationFailure == true) && 
  (saAmfCompPresenceState == 
SA_AMF_PRESENCE_INSTANTIATION_FAILED))) &&
-  (!su->saAmfSUMaintenanceCampaign.empty())) {
+  (su->saAmfSUMaintenanceCampaign.empty())) {
 
saflog(LOG_NOTICE, amfSvcUsrName, "%s PresenceState %s => %s",
osaf_extended_name_borrow(_info.name), 
avd_pres_state_name[old_state],
diff --git a/osaf/services/saf/amf/amfd/include/su.h 
b/osaf/services/saf/amf/amfd/include/su.h
--- a/osaf/services/saf/amf/amfd/include/su.h
+++ b/osaf/services/saf/amf/amfd/include/su.h
@@ -96,6 +96,7 @@ class AVD_SU {
AVD_SU *su_list_su_type_next;
 
void set_su_failover(bool value);
+   void set_su_maintenance_campaign(void);
void dec_curr_stdby_si();
void inc_curr_stdby_si();
void inc_curr_act_si();
@@ -116,7 +117,7 @@ class AVD_SU {
void set_term_state(bool state);
void remove_from_model();
void set_su_switch(SaToggleState state, bool wrt_to_imm = true);
-   AVD_AVND *get_node_ptr(void);
+   AVD_AVND *get_node_ptr(void) const;
bool is_in_service(void);
bool is_instantiable(void);
void reset_all_comps_assign_flag();
diff --git a/osaf/services/saf/amf/amfd/sgproc.cc 
b/osaf/services/saf/amf/amfd/sgproc.cc
--- a/osaf/services/saf/amf/amfd/sgproc.cc
+++ b/osaf/services/saf/amf/amfd/sgproc.cc
@@ -804,7 +804,7 @@ void avd_su_oper_state_evh(AVD_CL_CB *cb
node->recvr_fail_sw = true;
 
 // if maintenance campaign is ongoing, disable node reboot
-if (su->saAmfSUMaintenanceCampaign.empty())
+if (!su->saAmfSUMaintenanceCampaign.empty())
   node_reboot_req = false;
 
switch 
(n2d_msg->msg_info.n2d_opr_state.rec_rcvr.raw) {
diff --git a/osaf/services/saf/amf/amfd/su.cc b/osaf/services/saf/amf/amfd/su.cc
--- a/osaf/services/saf/amf/amfd/su.cc
+++ b/osaf/services/saf/amf/amfd/su.cc
@@ -737,7 +737,7 @@ void AVD_SU::set_pres_state(SaAmfPresenc
(su_on_node->saAmfNodeFailfastOnTerminationFailure == 
true) &&
(sg_of_su->saAmfSGAutoRepair == true) &&
(su_on_node->saAmfNodeAutoRepair == true) &&
-  (!saAmfSUMaintenanceCampaign.empty()))
+  (saAmfSUMaintenanceCampaign.empty()))
/* According to AMF B.04.01 Section 4.8 Page 214 if user 
configures
   saAmfNodeFailfastOnTerminationFailure = true, AMF has to 
perform
   node failfast recovery action. So mark SU to 
SA_AMF_PRESENCE_TERMINATION_FAILED 
@@ -748,7 +748,7 @@ void AVD_SU::set_pres_state(SaAmfPresenc
(su_on_node->saAmfNodeFailfastOnInstantiationFailure == 
true) &&
(sg_of_su->saAmfSGAutoRepair == true) &&
(su_on_node->saAmfNodeAutoRepair == true) &&
-  (!saAmfSUMaintenanceCampaign.empty())) 
+  (saAmfSUMaintenanceCampaign.empty())) 
/* According to AMF B.04.01 Section 4.6 Page 212 if user 
configures
   saAmfNodeFailfastOnInstantiationFailure = true, AMF has to 
perform
   node failfast recovery action. So mark SU to 
SA_AMF_PRESENCE_INSTANTIATION_FAILED
@@ -1840,6 +1840,7 @@ static void su_ccb_apply_modify_hdlr(str
TRACE("saAmfSUMaintenanceCampaign set to '%s' 
for 

[devel] [PATCH 0 of 1] Review Request for amf: support restrictions to auto-repair [#2144]

2017-01-17 Thread Alex Jones
Summary: amf: support restrictions to auto-repair V3
Review request for Trac Ticket(s): 2144
Peer Reviewer(s): praveen, nagu
Pull request to: 
Affected branch(es): default
Development branch:


Impacted area   Impact y/n

 Docsn
 Build systemn
 RPM/packaging   n
 Configuration files n
 Startup scripts n
 SAF servicesy
 OpenSAF servicesn
 Core libraries  n
 Samples n
 Tests   n
 Other   n


Comments (indicate scope for each "y" above):
-
Replace the V2 patch with this V3 patch. You should still use the first original
one, and this one on top of it.

changeset 107b80219b2dff125fa30ddda4be5ebfc5531f60
Author: Alex Jones 
Date:   Tue, 17 Jan 2017 15:32:38 -0500

amf: support restrictions to auto-repair V3 [#2144]

This patch implements section 3.11.1.4.2 of AMF spec (Restrictions to 
Auto-
Repair).


Complete diffstat:
--
 osaf/libs/common/amf/include/amf_defs.h   |   1 +
 osaf/services/saf/amf/amfd/comp.cc|   2 +-
 osaf/services/saf/amf/amfd/include/su.h   |   3 ++-
 osaf/services/saf/amf/amfd/sgproc.cc  |   2 +-
 osaf/services/saf/amf/amfd/su.cc  |  18 +++---
 osaf/services/saf/amf/amfnd/clc.cc|  28 
+++-
 osaf/services/saf/amf/amfnd/err.cc|  20 
 osaf/services/saf/amf/amfnd/include/avnd_su.h |   2 ++
 osaf/services/saf/amf/amfnd/sudb.cc   |   3 +++
 osaf/services/saf/amf/amfnd/susm.cc   |  10 --
 10 files changed, 68 insertions(+), 21 deletions(-)


Testing Commands:
-
1) set suMaintenanceCampaign for an SU
2) perform some failures on components in that SU


Testing, Expected Results:
--
1) auto repair should not get invoked while suMaintenanceCampaign is set for
   that SU.


Conditions of Submission:
-
 <>


Arch  Built StartedLinux distro
---
mipsn  n
mips64  n  n
x86 n  n
x86_64  y  y
powerpc n  n
powerpc64   n  n


Reviewer Checklist:
---
[Submitters: make sure that your review doesn't trigger any checkmarks!]


Your checkin has not passed review because (see checked entries):

___ Your RR template is generally incomplete; it has too many blank entries
that need proper data filled in.

___ You have failed to nominate the proper persons for review and push.

___ Your patches do not have proper short+long header

___ You have grammar/spelling in your header that is unacceptable.

___ You have exceeded a sensible line length in your headers/comments/text.

___ You have failed to put in a proper Trac Ticket # into your commits.

___ You have incorrectly put/left internal data in your comments/files
(i.e. internal bug tracking tool IDs, product names etc)

___ You have not given any evidence of testing beyond basic build tests.
Demonstrate some level of runtime or other sanity testing.

___ You have ^M present in some of your files. These have to be removed.

___ You have needlessly changed whitespace or added whitespace crimes
like trailing spaces, or spaces before tabs.

___ You have mixed real technical changes with whitespace and other
cosmetic code cleanup changes. These have to be separate commits.

___ You need to refactor your submission into logical chunks; there is
too much content into a single commit.

___ You have extraneous garbage in your review (merge commits etc)

___ You have giant attachments which should never have been sent;
Instead you should place your content in a public tree to be pulled.

___ You have too many commits attached to an e-mail; resend as threaded
commits, or place in a public tree for a pull.

___ You have resent this content multiple times without a clear indication
of what has changed between each re-send.

___ You have failed to adequately and individually address all of the
comments and change requests that were proposed in the initial review.

___ You have a misconfigured ~/.hgrc file (i.e. username, email etc)

___ Your computer have a badly configured date and time; confusing the
the threaded patch review.

___ Your changes affect IPC mechanism, and you don't present any results
for in-service upgradability test.

___ Your changes affect user manual and documentation, your patch series
do not contain the patch that updates the Doxygen manual.


--
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot