[devel] [PATCH 1 of 1] imm: Return implementer ID to timed out client [#1948]

2016-08-10 Thread Hung Nguyen
 osaf/services/saf/immsv/immnd/ImmModel.cc  |  12 ++--
 osaf/services/saf/immsv/immnd/immnd_evt.c  |  10 +-
 osaf/services/saf/immsv/immnd/immnd_init.h |   2 +-
 3 files changed, 20 insertions(+), 4 deletions(-)


When receiving redundant request that comes from timed out client,
return SA_AIS_OK with the implementer ID.

diff --git a/osaf/services/saf/immsv/immnd/ImmModel.cc 
b/osaf/services/saf/immsv/immnd/ImmModel.cc
--- a/osaf/services/saf/immsv/immnd/ImmModel.cc
+++ b/osaf/services/saf/immsv/immnd/ImmModel.cc
@@ -1828,8 +1828,10 @@ immModel_implementerSet(IMMND_CB *cb, co
 }
 
 SaAisErrorT 
-immModel_implIsFree(IMMND_CB *cb, const SaImmOiImplementerNameT impName)
-{
+immModel_implIsFree(IMMND_CB *cb, const IMMSV_OI_IMPLSET_REQ *req, SaUint32T 
*impl_id)
+{
+*impl_id = 0;
+SaImmOiImplementerNameT impName = req->impl_name.buf;
 std::string implName(impName);
 if(implName.empty()) {
 LOG_NO("ERR_INVALID_PARAM: Empty implementer name");
@@ -1844,6 +1846,12 @@ immModel_implIsFree(IMMND_CB *cb, const 
 if(impl->mId == 0) {return SA_AIS_OK;}
 if(impl->mDying) {return SA_AIS_ERR_TRY_AGAIN;}
 
+/* Check for redundant request that comes from previously timed out client 
*/
+if (impl->mConn == m_IMMSV_UNPACK_HANDLE_HIGH(req->client_hdl) &&
+impl->mNodeId == m_IMMSV_UNPACK_HANDLE_LOW(req->client_hdl)) {
+*impl_id = impl->mId;
+}
+
 return SA_AIS_ERR_EXIST;
 }
 
diff --git a/osaf/services/saf/immsv/immnd/immnd_evt.c 
b/osaf/services/saf/immsv/immnd/immnd_evt.c
--- a/osaf/services/saf/immsv/immnd/immnd_evt.c
+++ b/osaf/services/saf/immsv/immnd/immnd_evt.c
@@ -2556,10 +2556,17 @@ static uint32_t immnd_evt_proc_impl_set(
in a subsequent implementerSet over fevs arriving before this 
implementerSet
arrives back over fevs. See finalizeSync #1871.
 */
+   SaUint32T impl_id;
send_evt.info.imma.info.implSetRsp.error =
-   immModel_implIsFree(cb, evt->info.implSet.impl_name.buf);
+   immModel_implIsFree(cb, &evt->info.implSet, &impl_id);
+
 
if(send_evt.info.imma.info.implSetRsp.error != SA_AIS_OK) {
+   if (impl_id && send_evt.info.imma.info.implSetRsp.error == 
SA_AIS_ERR_EXIST) {
+   /* Immediately respond OK to agent */
+   send_evt.info.imma.info.implSetRsp.error = SA_AIS_OK;
+   send_evt.info.imma.info.implSetRsp.implId = impl_id;
+   }
goto agent_rsp;
}
 
@@ -9859,6 +9866,7 @@ static void immnd_evt_proc_impl_set_rsp(
nodeId = m_IMMSV_UNPACK_HANDLE_LOW(clnt_hdl);
implId = evt->info.implSet.impl_id;
TRACE_2("originated here?:%u nodeId:%x conn: %u", originatedAtThisNd, 
nodeId, conn);
+   sleep(1);
 
if(evt->type == IMMND_EVT_D2ND_IMPLSET_RSP) {
/* In immModel_implementerSet, 0 will be replaced with 
DEFAULT_TIMEOUT_SEC
diff --git a/osaf/services/saf/immsv/immnd/immnd_init.h 
b/osaf/services/saf/immsv/immnd/immnd_init.h
--- a/osaf/services/saf/immsv/immnd/immnd_init.h
+++ b/osaf/services/saf/immsv/immnd/immnd_init.h
@@ -439,7 +439,7 @@ extern "C" {
bool immModel_pbeNotWritable(IMMND_CB *cb);
 
SaAisErrorT immModel_implIsFree(IMMND_CB *cb,
-   const SaImmOiImplementerNameT implName);
+   const IMMSV_OI_IMPLSET_REQ *req, SaUint32T *impl_id);
 
SaAisErrorT immModel_resourceDisplay(IMMND_CB *cb, 
const struct ImmsvAdminOperationParam *reqparams,

--
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity 
planning reports. http://sdm.link/zohodev2dev
___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel


[devel] [PATCH 0 of 1] Review Request for imm: Return implementer ID to timed out client [#1948]

2016-08-10 Thread Hung Nguyen
Summary: imm: Return implementer ID to timed out client [#1948]
Review request for Trac Ticket(s): 1948
Peer Reviewer(s): Zoran, Neel
Pull request to:
Affected branch(es): 4.7, 5.0, 5.1
Development branch: 5.1


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 217f5c748887d61e91fb8c66c59e1d362c2bfa02
Author: Hung Nguyen 
Date:   Thu, 11 Aug 2016 13:51:52 +0700

imm: Return implementer ID to timed out client [#1948]

When receiving redundant request that comes from timed out client, 
return
SA_AIS_OK with the implementer ID.


Complete diffstat:
--
 osaf/services/saf/immsv/immnd/ImmModel.cc  |  12 ++--
 osaf/services/saf/immsv/immnd/immnd_evt.c  |  10 +-
 osaf/services/saf/immsv/immnd/immnd_init.h |   2 +-
 3 files changed, 20 insertions(+), 4 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  n  n
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.


--
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity 
planning reports. http://sdm.link/zohodev2dev
___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel


Re: [devel] [PATCH 1 of 5] amfd: replace SaNameT with string in include dir [#1642]

2016-08-10 Thread praveen malviya
Hi,

I think, as of now, approaches discussed in this mail thread can be 
mixed for a temporary solution: Dispatch() can return SA_AIS_OK by 
invoking the callback(s) with truncated values for any long field (like 
comp name, csi name etc). In this way comp will have callbacks and AMF 
will also be maintaining legal COMPCSIs. Actual values can be logged. 
Also the the PR doc and Readme should talk how truncation will be performed.
I think, this can be done in this release.
Other solution of rejecting the CCB itself can be postponed as of now.


Thanks,
Praveen

On 11-Aug-16 10:03 AM, Long Nguyen wrote:
> Hi Praveen and others,
>
> I have an idea marked with [Long] below.
>
> Best regards,
> Long Nguyen.
>
> On 8/3/2016 1:45 PM, praveen malviya wrote:
>>
>>
>> On 02-Aug-16 3:39 AM, minh chau wrote:
>>> Hi Praveen,
>>>
>>> One comment with [Minh] in line.
>>>
>>> Thanks,
>>> Minh
>>>
>>> On 01/08/16 17:22, Gary Lee wrote:
 Hi Praveen

 On 1/08/2016 4:29 PM, praveen malviya wrote:
> Hi Gary, Long,
>
> Some comments/observations:
> -In AMFD saAisNameBorrow() is used in logging and AMFND uses
> osaf_extended_name_borrow().
> For osaf_extended_name_borrow() note in osaf_extended_name.h says it
> is intended for mainly agent libraries. But middle-ware services
> always use core libs. At the same time saAisNameBorrow(), I think, is
> for application.
> any reason of using them this way and what is the recommended way?
 I think I used both styles in amfd. I think we can change saAisNameXX
 to osaf_extended_name_XX just before pushing, to make it consistent
 with the rest of the OpenSAF services.
> -I think, one case may arrive from upgrade perspective.
> Suppose any application (say amf_demo app) is running without
> enabling long dn and a csi, with its RDn greater than 256, is added
> dynamically (long dn enabled in IMM). In this case AMFD will assign
> this csi to the running component. Component will not be able to read
> the CSI and may crash.
> This is related to invocation of CSI_SET callback but same will be
> valid for PG tracking also. There may be other cases also.
> Even truncation will not work in this case.
>>> [Minh] I think the agent patch that Gary submitted currently returns
>>> SA_AIS_ERR_NAME_TOO_LONG in saAmfDispatch() if long DN callback comes to
>>> legacy application (unadapted long DN app). The real callback won't be
>>> issued but application may crash if it exit() on non-SA_AIS_OK from
>>> Dispatch(). I guess you have seen this with #1553? Do you think it's
>>> good way if amf agent drops the long DN callback and also Dispatch()
>>> returns OK to legacy app, and print error in syslog?
>> Not observed in the context of #1553, but I remember about such a fix
>> in NTF long dn changes.
>> Returning SA_AIS_OK in Dispatch() call saves application from crash,
>> but the problem in AMF is still different as it will maintain a
>> COMPCSI relationship without comp being actually assigned for that.
>>
>> Can we think of a way where AMF will not allow this conf change by
>> rejecting the CCB operation itself. For this AMF should know that this
>> application supports Long dn or not. But this information needs to be
>> carried from agent to AMFD.
>> Before going for such a way, I think, we can ask opinion from other
>> AMF maintainers.
>> [Long] You have the good solution. However, it is hard to know if an
>> application supports long DN or not at the time of CCB operration. Can
>> we make your suggestion as an enhancement later?
>>
>> Thanks,
>> Praveen
>>
>>
>>
> - While running some tests observed crashes in amfnd and amfd.
> I will update #1642 with bt information.
 Minh will answer this bit.

 Thanks
 Gary

>>>
>>
>

--
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity 
planning reports. http://sdm.link/zohodev2dev
___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel


[devel] [PATCH 0 of 1] Review Request for log: improve test cases for log service [#1913]

2016-08-10 Thread Canh Van Truong
Summary: log: improve test cases for log service [#1913]
Review request for Trac Ticket(s): #1913
Peer Reviewer(s): Vu, Mahesh, Lennart
Pull request to: Vu
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 66ce76934620ec6230cfc90da3082167d72392b6
Author: Canh Van Truong 
Date:   Fri, 05 Aug 2016 15:21:55 +0700

log: improve test cases for log service [#1913]

The patch fixes to improve following cases:

1) The APIs may return TRY_AGAIN, this may not be a fault. Writing some
wrapper functions here to handle TRY_AGAIN case for log API.

2) Remove abort (safassert) in test case and handle it as test case 
failed.

3) Some test cases (in testsuite 4) have dependence on other test cases.
Make them independency.

4) Some test cases (in testsuite 4, 5, 6) change setting such as IMM
attributes values and don't restore them back to previous. Get the
attributes values before changing attributes, then restore its to 
previous
values at end of test cases.

5) Some test cases in testsuite 6 change attributes base on the present
value of logMaxLogrecsize without read the present value of its. They 
use
constanst values (=1024). Changing to read logMaxLogrecsize value and 
use
it.


Complete diffstat:
--
 tests/logsv/logtest.c |89 +++-
 tests/logsv/logtest.h |89 +++-
 tests/logsv/tet_LogOiOps.c|  2163 

 tests/logsv/tet_Log_recov.c   |95 +--
 tests/logsv/tet_log_longDN.c  | 1 -
 tests/logsv/tet_saLogDispatch.c   | 9 +-
 tests/logsv/tet_saLogFinalize.c   |11 +-
 tests/logsv/tet_saLogInitialize.c |26 +-
 tests/logsv/tet_saLogLimitGet.c   |19 +-
 tests/logsv/tet_saLogSelectionObjectGet.c |13 +-
 tests/logsv/tet_saLogStreamClose.c|24 +-
 tests/logsv/tet_saLogStreamOpenAsync_2.c  |15 +-
 tests/logsv/tet_saLogStreamOpen_2.c   |   546 +---
 tests/logsv/tet_saLogWriteLog.c   |23 +-
 tests/logsv/tet_saLogWriteLogAsync.c  |   461 -
 tests/logsv/tet_saLogWriteLogCallbackT.c  |   110 +++-
 16 files changed, 2266 insertions(+), 1428 deletions(-)


Testing Commands:
-
Run all test cases.


Testing, Expected Results:
--
All test case passed. 


Conditions of Submission:
-
Ack from reviewers


Arch  Built StartedLinux distro
---
mipsn  n
mips64  n  n
x86 n  n
x86_64  n  n
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
comm

Re: [devel] [PATCH 1 of 1] dtm: When IPv4 broadcast address is not configured, derive it from IP and netmask [#1930]

2016-08-10 Thread A V Mahesh
Hi Anders Widell,

ACK with assumption, that  In Container environments IV6 not being 
used/issue doesn't observed.

-AVM


On 8/4/2016 2:22 PM, Anders Widell wrote:
>   osaf/services/infrastructure/dtms/dtm/dtm_read_config.c |  36 
> +++-
>   1 files changed, 32 insertions(+), 4 deletions(-)
>
>
> The IPv4 broadcast address is sometimes not configured when running in some
> container environments (e.g. docker). In these cases, derive the broadcast
> address from the IPv4 address and netmask.
>
> diff --git a/osaf/services/infrastructure/dtms/dtm/dtm_read_config.c 
> b/osaf/services/infrastructure/dtms/dtm/dtm_read_config.c
> --- a/osaf/services/infrastructure/dtms/dtm/dtm_read_config.c
> +++ b/osaf/services/infrastructure/dtms/dtm/dtm_read_config.c
> @@ -15,10 +15,15 @@
>*
>*/
>   
> +#include 
> +#include 
> +#include 
>   #include 
> -#include 
> +#include 
> +#include 
> +#include 
>   #include 
> -#include 
> +#include "logtrace.h"
>   #include "ncs_main_papi.h"
>   #include "dtm.h"
>   #include "dtm_socket.h"
> @@ -162,8 +167,31 @@ char *dtm_validate_listening_ip_addr(DTM
>   
>   //Bcast  Address
>   if (if_addr->ifa_addr->sa_family == AF_INET) {
> - tmp = &((struct sockaddr_in 
> *)if_addr->ifa_broadaddr)->sin_addr;
> - inet_ntop(if_addr->ifa_addr->sa_family, 
> tmp, config->bcast_addr,sizeof(buf));
> + struct in_addr addr =
> + ((struct sockaddr_in*) if_addr->
> +  ifa_addr)->sin_addr;
> + struct in_addr netmask =
> + ((struct sockaddr_in*) if_addr->
> +  ifa_netmask)->sin_addr;
> + struct in_addr broadaddr =
> + ((struct sockaddr_in*) if_addr->
> +  ifa_broadaddr)->sin_addr;
> + TRACE("DTM: addr=0x%" PRIx32,
> +   ntohl(addr.s_addr));
> + TRACE("DTM: netmask=0x%" PRIx32,
> +   ntohl(netmask.s_addr));
> + TRACE("DTM: broadaddr=0x%" PRIx32,
> +   ntohl(broadaddr.s_addr));
> + if (broadaddr.s_addr == addr.s_addr ||
> + broadaddr.s_addr ==
> + htonl(INADDR_ANY)) {
> + broadaddr.s_addr = addr.s_addr |
> + ~netmask.s_addr;
> + }
> + inet_ntop(if_addr->ifa_addr->sa_family,
> +   &broadaddr,
> +   config->bcast_addr,
> +   sizeof(buf));
>   } else if (if_addr->ifa_addr->sa_family == 
> AF_INET6) {
>   struct sockaddr_in6 *addr = (struct 
> sockaddr_in6 *)if_addr->ifa_addr;
>   memset(config->bcast_addr, 0, 
> INET6_ADDRSTRLEN);


--
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity 
planning reports. http://sdm.link/zohodev2dev
___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel


Re: [devel] [PATCH 4 of 8] cpsv: Add new message to support extended SaNameT v1 [#1574]

2016-08-10 Thread A V Mahesh
Hi Hoang,

Ok , I will  check and start testing & reviewing the patch.

-AVM


On 8/11/2016 10:11 AM, Vo Minh Hoang wrote:
> Dear Mahesh,
>
> Encode and decode for new messages are implemented in separate functions
> like *_encode() and *_decode() so they do not exist in *_edu.c file.
>
> I find only MDS_CLIENT_MSG_FORMAT_VER and I think that I should not update
> this each time adding new message. I am sorry if it is wrong.
>
> Thank you very much for your review.
> Best regards,
> Hoang
>
> -Original Message-
> From: A V Mahesh [mailto:mahesh.va...@oracle.com]
> Sent: Wednesday, August 10, 2016 6:37 PM
> To: Hoang Vo 
> Cc: opensaf-devel@lists.sourceforge.net
> Subject: Re: [PATCH 4 of 8] cpsv: Add new message to support extended
> SaNameT v1 [#1574]
>
> Hi Hoang,
>
> I am seeing new encode decodes done between  D to ND ,  in this patch  ( old
> cpd to new cpnd  & old cpnd to new cpd ) but not able find edu rules ,
> please confirm.
>
> Otherwise it will take unnecessary  testing effort.
>
> If not handled please refer `osaf/libs/common/cpsv/cpsv_edu.c ` file for
> MSG_FORMAT_VER handling or any old patches
>
> -AVM
>
>
> On 8/2/2016 2:14 PM, Hoang Vo wrote:
>>osaf/libs/common/cpsv/cpsv_evt.c |  504
> ++-
>>osaf/libs/common/cpsv/include/cpsv_evt.h |   24 +
>>osaf/services/saf/cpsv/cpd/cpd_mds.c |   84 -
>>osaf/services/saf/cpsv/cpnd/cpnd_mds.c   |   84 -
>>4 files changed, 668 insertions(+), 28 deletions(-)
>>
>>
>> New messages supporting extended SaNameT are introduce. Encoding and
> decoding funtions for them are also included.
>> diff --git a/osaf/libs/common/cpsv/cpsv_evt.c
>> b/osaf/libs/common/cpsv/cpsv_evt.c
>> --- a/osaf/libs/common/cpsv/cpsv_evt.c
>> +++ b/osaf/libs/common/cpsv/cpsv_evt.c
>> @@ -30,11 +30,14 @@
>>
>>#include "cpsv.h"
>>#include "cpa_tmr.h"
>> +#include "osaf_extended_name.h"
>>
>>FUNC_DECLARATION(CPSV_CKPT_DATA);
>>static SaCkptSectionIdT *cpsv_evt_dec_sec_id(NCS_UBAID *i_ub, uint32_t
> svc_id);
>>static uint32_t cpsv_evt_enc_sec_id(NCS_UBAID *o_ub, SaCkptSectionIdT
> *sec_id);
>>static void cpsv_convert_sec_id_to_string(char *sec_id_str,
>> SaCkptSectionIdT *section_id);
>> +static uint32_t cpsv_encode_extended_name_flat(NCS_UBAID *uba,
>> +SaNameT *name); static uint32_t
>> +cpsv_decode_extended_name_flat(NCS_UBAID *uba, SaNameT *name);
>>
>>const char *cpa_evt_str[] = {
>>  "STRING_0",
>> @@ -258,6 +261,13 @@ char* cpsv_evt_str(CPSV_EVT *evt, char *
>>  info->client_hdl, info->ckpt_name.value);
>>  break;
>>  }
>> +case CPND_EVT_A2ND_CKPT_OPEN_2:
>> +{
>> +CPSV_A2ND_OPEN_REQ *info =
> &evt->info.cpnd.info.openReq;
>> +snprintf(o_evt_str, len,
> "CPND_EVT_A2ND_CKPT_OPEN_2(hdl=%llu, %s)",
>> +info->client_hdl,
> osaf_extended_name_borrow(&info->ckpt_name));
>> +break;
>> +}
>>  case CPND_EVT_A2ND_CKPT_CLOSE:
>>  {
>>  CPSV_A2ND_CKPT_CLOSE *info =
> &evt->info.cpnd.info.closeReq; @@
>> -271,6 +281,12 @@ char* cpsv_evt_str(CPSV_EVT *evt, char *
>>  snprintf(o_evt_str, len,
> "CPND_EVT_A2ND_CKPT_UNLINK(%s)", info->ckpt_name.value);
>>  break;
>>  }
>> +case CPND_EVT_A2ND_CKPT_UNLINK_2:
>> +{
>> +CPSV_A2ND_CKPT_UNLINK *info =
> &evt->info.cpnd.info.ulinkReq;
>> +snprintf(o_evt_str, len,
> "CPND_EVT_A2ND_CKPT_UNLINK_2(%s)",
> osaf_extended_name_borrow(&info->ckpt_name));
>> +break;
>> +}
>>  case CPND_EVT_A2ND_CKPT_RDSET:
>>  {
>>  CPSV_A2ND_RDSET *info =
> &evt->info.cpnd.info.rdsetReq; @@ -513,12
>> +529,33 @@ char* cpsv_evt_str(CPSV_EVT *evt, char *
>>  case CPND_EVT_D2ND_CKPT_CREATE:
>>  {
>>  CPSV_D2ND_CKPT_CREATE *info =
> &evt->info.cpnd.info.ckpt_create;
>> -snprintf(o_evt_str, len, "[%llu]
> CPND_EVT_D2ND_CKPT_CREATE(%s, create_rep=%s, active=0x%X)",
>> -info->ckpt_info.ckpt_id,
> info->ckpt_name.value,
>> +snprintf(o_evt_str, len, "[%llu]
> CPND_EVT_D2ND_CKPT_CREATE(%s, create_rep=%s, is_act=%s, active=0x%X,
> dest_cnt=%d)",
>> +info->ckpt_info.ckpt_id,
>> +osaf_extended_name_borrow(&info->ckpt_name),
>>  info->ckpt_info.ckpt_rep_create ? "true" :
> "false",
>> -
> m_NCS_NODE_ID_FROM_MDS_DEST(info->ckpt_info.active_dest));
>> +info->ckpt_info.is_active_exists ? "true" :
> "false",
>> +
> m_NCS_NODE_ID_FROM_MDS_DEST(info->ckpt_info.active_dest),
>> +info->ckpt_info.dest_cnt);
>>  break;
>>  }

Re: [devel] [PATCH 4 of 8] cpsv: Add new message to support extended SaNameT v1 [#1574]

2016-08-10 Thread Vo Minh Hoang
Dear Mahesh,

Encode and decode for new messages are implemented in separate functions
like *_encode() and *_decode() so they do not exist in *_edu.c file.

I find only MDS_CLIENT_MSG_FORMAT_VER and I think that I should not update
this each time adding new message. I am sorry if it is wrong.

Thank you very much for your review.
Best regards,
Hoang

-Original Message-
From: A V Mahesh [mailto:mahesh.va...@oracle.com] 
Sent: Wednesday, August 10, 2016 6:37 PM
To: Hoang Vo 
Cc: opensaf-devel@lists.sourceforge.net
Subject: Re: [PATCH 4 of 8] cpsv: Add new message to support extended
SaNameT v1 [#1574]

Hi Hoang,

I am seeing new encode decodes done between  D to ND ,  in this patch  ( old
cpd to new cpnd  & old cpnd to new cpd ) but not able find edu rules ,
please confirm.

Otherwise it will take unnecessary  testing effort.

If not handled please refer `osaf/libs/common/cpsv/cpsv_edu.c ` file for
MSG_FORMAT_VER handling or any old patches

-AVM


On 8/2/2016 2:14 PM, Hoang Vo wrote:
>   osaf/libs/common/cpsv/cpsv_evt.c |  504
++-
>   osaf/libs/common/cpsv/include/cpsv_evt.h |   24 +
>   osaf/services/saf/cpsv/cpd/cpd_mds.c |   84 -
>   osaf/services/saf/cpsv/cpnd/cpnd_mds.c   |   84 -
>   4 files changed, 668 insertions(+), 28 deletions(-)
>
>
> New messages supporting extended SaNameT are introduce. Encoding and
decoding funtions for them are also included.
>
> diff --git a/osaf/libs/common/cpsv/cpsv_evt.c 
> b/osaf/libs/common/cpsv/cpsv_evt.c
> --- a/osaf/libs/common/cpsv/cpsv_evt.c
> +++ b/osaf/libs/common/cpsv/cpsv_evt.c
> @@ -30,11 +30,14 @@
>   
>   #include "cpsv.h"
>   #include "cpa_tmr.h"
> +#include "osaf_extended_name.h"
>   
>   FUNC_DECLARATION(CPSV_CKPT_DATA);
>   static SaCkptSectionIdT *cpsv_evt_dec_sec_id(NCS_UBAID *i_ub, uint32_t
svc_id);
>   static uint32_t cpsv_evt_enc_sec_id(NCS_UBAID *o_ub, SaCkptSectionIdT
*sec_id);
>   static void cpsv_convert_sec_id_to_string(char *sec_id_str, 
> SaCkptSectionIdT *section_id);
> +static uint32_t cpsv_encode_extended_name_flat(NCS_UBAID *uba, 
> +SaNameT *name); static uint32_t 
> +cpsv_decode_extended_name_flat(NCS_UBAID *uba, SaNameT *name);
>   
>   const char *cpa_evt_str[] = {
>   "STRING_0",
> @@ -258,6 +261,13 @@ char* cpsv_evt_str(CPSV_EVT *evt, char *
>   info->client_hdl, info->ckpt_name.value);
>   break;
>   }
> + case CPND_EVT_A2ND_CKPT_OPEN_2:
> + {
> + CPSV_A2ND_OPEN_REQ *info =
&evt->info.cpnd.info.openReq;
> + snprintf(o_evt_str, len,
"CPND_EVT_A2ND_CKPT_OPEN_2(hdl=%llu, %s)",
> + info->client_hdl,
osaf_extended_name_borrow(&info->ckpt_name));
> + break;
> + }
>   case CPND_EVT_A2ND_CKPT_CLOSE:
>   {
>   CPSV_A2ND_CKPT_CLOSE *info =
&evt->info.cpnd.info.closeReq; @@ 
> -271,6 +281,12 @@ char* cpsv_evt_str(CPSV_EVT *evt, char *
>   snprintf(o_evt_str, len,
"CPND_EVT_A2ND_CKPT_UNLINK(%s)", info->ckpt_name.value);
>   break;
>   }
> + case CPND_EVT_A2ND_CKPT_UNLINK_2:
> + {
> + CPSV_A2ND_CKPT_UNLINK *info =
&evt->info.cpnd.info.ulinkReq;
> + snprintf(o_evt_str, len,
"CPND_EVT_A2ND_CKPT_UNLINK_2(%s)",
osaf_extended_name_borrow(&info->ckpt_name));
> + break;
> + }
>   case CPND_EVT_A2ND_CKPT_RDSET:
>   {
>   CPSV_A2ND_RDSET *info =
&evt->info.cpnd.info.rdsetReq; @@ -513,12 
> +529,33 @@ char* cpsv_evt_str(CPSV_EVT *evt, char *
>   case CPND_EVT_D2ND_CKPT_CREATE:
>   {
>   CPSV_D2ND_CKPT_CREATE *info =
&evt->info.cpnd.info.ckpt_create;
> - snprintf(o_evt_str, len, "[%llu]
CPND_EVT_D2ND_CKPT_CREATE(%s, create_rep=%s, active=0x%X)",
> - info->ckpt_info.ckpt_id,
info->ckpt_name.value,
> + snprintf(o_evt_str, len, "[%llu]
CPND_EVT_D2ND_CKPT_CREATE(%s, create_rep=%s, is_act=%s, active=0x%X,
dest_cnt=%d)",
> + info->ckpt_info.ckpt_id, 
> +osaf_extended_name_borrow(&info->ckpt_name),
>   info->ckpt_info.ckpt_rep_create ? "true" :
"false",
> -
m_NCS_NODE_ID_FROM_MDS_DEST(info->ckpt_info.active_dest));
> + info->ckpt_info.is_active_exists ? "true" :
"false",
> +
m_NCS_NODE_ID_FROM_MDS_DEST(info->ckpt_info.active_dest),
> + info->ckpt_info.dest_cnt);
>   break;
>   }
> + case CPND_EVT_D2ND_CKPT_CREATE_2:
> + {
> + CPSV_D2ND_CKPT_CREATE *info =
&evt->info.cpnd.info.ckpt_create;
> + snprintf(o_evt_str, len, "[%llu]
CPND_EVT_D2ND_CKPT_CREATE_2(%s, create_rep=%s, is_a

Re: [devel] [PATCH 1 of 5] amfd: replace SaNameT with string in include dir [#1642]

2016-08-10 Thread Long Nguyen
Hi Praveen and others,

I have an idea marked with [Long] below.

Best regards,
Long Nguyen.

On 8/3/2016 1:45 PM, praveen malviya wrote:
>
>
> On 02-Aug-16 3:39 AM, minh chau wrote:
>> Hi Praveen,
>>
>> One comment with [Minh] in line.
>>
>> Thanks,
>> Minh
>>
>> On 01/08/16 17:22, Gary Lee wrote:
>>> Hi Praveen
>>>
>>> On 1/08/2016 4:29 PM, praveen malviya wrote:
 Hi Gary, Long,

 Some comments/observations:
 -In AMFD saAisNameBorrow() is used in logging and AMFND uses
 osaf_extended_name_borrow().
 For osaf_extended_name_borrow() note in osaf_extended_name.h says it
 is intended for mainly agent libraries. But middle-ware services
 always use core libs. At the same time saAisNameBorrow(), I think, is
 for application.
 any reason of using them this way and what is the recommended way?
>>> I think I used both styles in amfd. I think we can change saAisNameXX
>>> to osaf_extended_name_XX just before pushing, to make it consistent
>>> with the rest of the OpenSAF services.
 -I think, one case may arrive from upgrade perspective.
 Suppose any application (say amf_demo app) is running without
 enabling long dn and a csi, with its RDn greater than 256, is added
 dynamically (long dn enabled in IMM). In this case AMFD will assign
 this csi to the running component. Component will not be able to read
 the CSI and may crash.
 This is related to invocation of CSI_SET callback but same will be
 valid for PG tracking also. There may be other cases also.
 Even truncation will not work in this case.
>> [Minh] I think the agent patch that Gary submitted currently returns
>> SA_AIS_ERR_NAME_TOO_LONG in saAmfDispatch() if long DN callback comes to
>> legacy application (unadapted long DN app). The real callback won't be
>> issued but application may crash if it exit() on non-SA_AIS_OK from
>> Dispatch(). I guess you have seen this with #1553? Do you think it's
>> good way if amf agent drops the long DN callback and also Dispatch()
>> returns OK to legacy app, and print error in syslog?
> Not observed in the context of #1553, but I remember about such a fix 
> in NTF long dn changes.
> Returning SA_AIS_OK in Dispatch() call saves application from crash, 
> but the problem in AMF is still different as it will maintain a 
> COMPCSI relationship without comp being actually assigned for that.
>
> Can we think of a way where AMF will not allow this conf change by 
> rejecting the CCB operation itself. For this AMF should know that this 
> application supports Long dn or not. But this information needs to be 
> carried from agent to AMFD.
> Before going for such a way, I think, we can ask opinion from other 
> AMF maintainers.
> [Long] You have the good solution. However, it is hard to know if an 
> application supports long DN or not at the time of CCB operration. Can 
> we make your suggestion as an enhancement later?
>
> Thanks,
> Praveen
>
>
>
 - While running some tests observed crashes in amfnd and amfd.
 I will update #1642 with bt information.
>>> Minh will answer this bit.
>>>
>>> Thanks
>>> Gary
>>>
>>
>


--
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity 
planning reports. http://sdm.link/zohodev2dev
___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel


Re: [devel] [PATCH 2 of 2] AMFND: Admin operation continuation if csi callback completes during headless [#1725 part 1] V1

2016-08-10 Thread minh chau
Hi Nagu,

Have you enabled IMM schema changes and adding these new attributes 
before upgrade?
This could be tested in the same way as previous additional attributes 
were introduced as before.

Thanks,
Minh

On 10/08/16 21:10, Nagendra Kumar wrote:
> Hi Minh,
>
> I was doing upgrade and downgrade, and I faced the following issue:
>
> Steps:
> #0 Both controllers are up(SC-1 Act, SC-2 Std) without the patch.
> #1 Stop standby controller(SC-2) and upgrade with the patch and start SC-2 as 
> Standby.
> #2 Perform SI switchover (2N SI), so that SC-2 is Act (with the patch) and 
> SC-1 is Standby(without the patch). Stop Standby controller(SC-1) and upgrade 
> with the patch and start SC-1 as Standby.
>
> Got error in syslog in SC-1 (Act):
> Aug 10 16:37:45 PM_SC-2 osafamfd[18234]: ER exec: create FAILED 12
> Aug 10 16:37:45 PM_SC-2 osafrded[18164]: NO Peer up on node 0x2010f
> Aug 10 16:37:45 PM_SC-2 osaffmd[18173]: NO clm init OK
> Aug 10 16:37:45 PM_SC-2 osaffmd[18173]: NO Peer clm node name: SC-1
> Aug 10 16:37:45 PM_SC-2 osafrded[18164]: NO Got peer info request from node 
> 0x2010f with role STANDBY
> Aug 10 16:37:45 PM_SC-2 osafrded[18164]: NO Got peer info response from node 
> 0x2010f with role STANDBY
> Aug 10 16:37:45 PM_SC-2 osafamfd[18234]: ER exec: create FAILED 12
>
>
> And there is no SUSI for SC-1:
> PM_SC-2:/home/nagu/views/staging-1725 # /etc/init.d/opensafd  status  
>   safSISU=safSu=SC-2\,safSg=NoRed\,safApp=OpenSAF,safSi=NoRed2,safApp=OpenSAF
>  saAmfSISUHAState=ACTIVE(1)
> safSISU=safSu=SC-2\,safSg=2N\,safApp=OpenSAF,safSi=SC-2N,safApp=OpenSAF
>  saAmfSISUHAState=ACTIVE(1)
>
>
> Thanks
> -Nagu
>
>> -Original Message-
>> From: Minh Hon Chau [mailto:minh.c...@dektech.com.au]
>> Sent: 05 August 2016 02:50
>> To: hans.nordeb...@ericsson.com; Nagendra Kumar; Praveen Malviya;
>> gary@dektech.com.au; long.hb.ngu...@dektech.com.au;
>> minh.c...@dektech.com.au
>> Cc: opensaf-devel@lists.sourceforge.net
>> Subject: [PATCH 2 of 2] AMFND: Admin operation continuation if csi callback
>> completes during headless [#1725 part 1] V1
>>
>>   osaf/services/saf/amf/amfnd/di.cc |  199 
>> +
>>   osaf/services/saf/amf/amfnd/include/avnd_di.h |1 +
>>   2 files changed, 134 insertions(+), 66 deletions(-)
>>
>>
>> The patch buffers susi_resp_msg during headless stage and resend it to
>> AMFD after headless.
>>
>> diff --git a/osaf/services/saf/amf/amfnd/di.cc
>> b/osaf/services/saf/amf/amfnd/di.cc
>> --- a/osaf/services/saf/amf/amfnd/di.cc
>> +++ b/osaf/services/saf/amf/amfnd/di.cc
>> @@ -804,11 +804,6 @@ uint32_t avnd_di_susi_resp_send(AVND_CB
>>  if (cb->term_state ==
>> AVND_TERM_STATE_OPENSAF_SHUTDOWN_STARTED)
>>  return rc;
>>
>> -if (cb->is_avd_down == true) {
>> -m_AVND_SU_ALL_SI_RESET(su);
>> -return rc;
>> -}
>> -
>>  // should be in assignment pending state to be here
>>  osafassert(m_AVND_SU_IS_ASSIGN_PEND(su));
>>
>> @@ -819,64 +814,76 @@ uint32_t avnd_di_susi_resp_send(AVND_CB
>>  TRACE_ENTER2("Sending Resp su=%s, si=%s, curr_state=%u,
>> prv_state=%u", su->name.value, curr_si->name.value,curr_si-
>>> curr_state,curr_si->prv_state);
>>  /* populate the susi resp msg */
>>  msg.info.avd = new AVSV_DND_MSG();
>> -msg.type = AVND_MSG_AVD;
>> -msg.info.avd->msg_type = AVSV_N2D_INFO_SU_SI_ASSIGN_MSG;
>> -msg.info.avd->msg_info.n2d_su_si_assign.msg_id = ++(cb-
>>> snd_msg_id);
>> -msg.info.avd->msg_info.n2d_su_si_assign.node_id = cb-
>>> node_info.nodeId;
>> -if (si) {
>> -msg.info.avd->msg_info.n2d_su_si_assign.single_csi =
>> -((si->single_csi_add_rem_in_si == 
>> AVSV_SUSI_ACT_BASE) ?
>> false : true);
>> -}
>> -TRACE("curr_assign_state '%u'", curr_si->curr_assign_state);
>> -msg.info.avd->msg_info.n2d_su_si_assign.msg_act =
>> -(m_AVND_SU_SI_CURR_ASSIGN_STATE_IS_ASSIGNED(curr_si) ||
>> - m_AVND_SU_SI_CURR_ASSIGN_STATE_IS_ASSIGNING(curr_si)) ?
>> -((!curr_si->prv_state) ? AVSV_SUSI_ACT_ASGN :
>> AVSV_SUSI_ACT_MOD) : AVSV_SUSI_ACT_DEL;
>> -msg.info.avd->msg_info.n2d_su_si_assign.su_name = su->name;
>> -if (si) {
>> -msg.info.avd->msg_info.n2d_su_si_assign.si_name = si->name;
>> -if (AVSV_SUSI_ACT_ASGN == si->single_csi_add_rem_in_si) {
>> -TRACE("si->curr_assign_state '%u'", curr_si-
>>> curr_assign_state);
>> -msg.info.avd->msg_info.n2d_su_si_assign.msg_act =
>> -
>> (m_AVND_SU_SI_CURR_ASSIGN_STATE_IS_ASSIGNED(curr_si) ||
>> -
>> m_AVND_SU_SI_CURR_ASSIGN_STATE_IS_ASSIGNING(curr_si)) ?
>> -AVSV_SUSI_ACT_ASGN : AVSV_SUSI_ACT_DEL;
>> -}
>> -}
>> -msg.info.avd->msg_info.n2d_su_si_assign.ha_state =
>> -(SA_AMF_HA_QUIESCING == curr_si->curr_state)

[devel] [PATCH 0 of 1] Review Request for build: Add cpplint filters [#1947]

2016-08-10 Thread Hans Nordeback
Summary: build: Add cpplint filters
Review request for Trac Ticket(s):  #1947
Peer Reviewer(s): AndersW
Pull request to: 
Affected branch(es): default
Development branch: default


Impacted area   Impact y/n

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


Comments (indicate scope for each "y" above):
- 
There are problem building opensaf into a separate directory
due to #1871 fix cpplint warnings. Instead this patch
suggest to use cpplint with filter to relax build/include and build/header 
rules.

changeset b210bbbf934b014804dd4c128cd9c731973373ea
Author: Hans Nordeback 
Date:   Wed, 10 Aug 2016 16:42:20 +0200

build: Add cpplint filters [#1947]


Complete diffstat:
--
 Makefile.common |  2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)


Testing Commands:
-
 make cpplint


Testing, Expected Results:
--
 <>


Conditions of Submission:
-
 <>


Arch  Built StartedLinux distro
---
mipsn  n
mips64  n  n
x86 n  n
x86_64  y  n
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.


--
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity 
planning reports. http://sdm.link/zohodev2dev
___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel


[devel] [PATCH 1 of 1] build: Add cpplint filters [#1947]

2016-08-10 Thread Hans Nordeback
 Makefile.common |  2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)


diff --git a/Makefile.common b/Makefile.common
--- a/Makefile.common
+++ b/Makefile.common
@@ -47,7 +47,7 @@ cpplint:
@cpplint=$$(find $(top_srcdir)/tests -name cpplint.py -mtime -30); \
test -z "$$cpplint" && wget -O $(top_srcdir)/tests/cpplint.py 
https://raw.githubusercontent.com/google/styleguide/gh-pages/cpplint/cpplint.py 
2>&1 && touch $(top_srcdir)/tests/cpplint.py; \
find . -path '*/.[a-zA-Z0-9]*' -or -path '*/cluster_sim_uml/*' -prune 
-or \( -name '*.[CH]' -or -name '*.hh' -or -name '*.[ch]pp' -or -name 
'*.[ch]xx' \) -exec echo "Invalid file name: {}" \; 1>&2 ; \
-   find . -path '*/.[a-zA-Z0-9]*' -or -path '*/cluster_sim_uml/*' -prune 
-or \( -name '*.cc' -or -name '*.h' \) -exec python 
$(top_srcdir)/tests/cpplint.py --extensions=cc,h {} \; ; \
+   find . -path '*/.[a-zA-Z0-9]*' -or -path '*/cluster_sim_uml/*' -prune 
-or \( -name '*.cc' -or -name '*.h' \) -exec python 
$(top_srcdir)/tests/cpplint.py --filter=-build/include,-build/header 
--extensions=cc,h {} \; ; \
true
 
 shellcheck:

--
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity 
planning reports. http://sdm.link/zohodev2dev
___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel


Re: [devel] [PATCH 1 of 1] pyosaf: Add __str__ method into non extended SaNameT class [#1737]

2016-08-10 Thread Hans Nordebäck
ack, code review only/Thanks HansN


On 08/05/2016 05:53 AM, Quyen Dao wrote:
> Hi,
>
> Please help review!
>
> Thanks,
> Quyen
>
> -Original Message-
> From: Quyen Dao [mailto:quyen@dektech.com.au]
> Sent: Wednesday, May 25, 2016 11:45 AM
> To: hans.nordeb...@ericsson.com; srikanth.revan...@oracle.com
> Cc: opensaf-devel@lists.sourceforge.net
> Subject: [devel] [PATCH 1 of 1] pyosaf: Add __str__ method into non extended
> SaNameT class [#1737]
>
>   python/pyosaf/saAis.py |  5 +
>   python/pyosaf/saImm.py |  2 +-
>   python/pyosaf/saNtf.py |  3 ++-
>   3 files changed, 8 insertions(+), 2 deletions(-)
>
>
> with this change, user can call str(sa_name_t_obj) to convert SaNameT to str
> without caring it's extended or non extended.
>
> unmarshalSaImmValue and unmarshalSaNtfValue functions are also changed to
> support both extended and non extended SaNameT
>
> diff --git a/python/pyosaf/saAis.py b/python/pyosaf/saAis.py
> --- a/python/pyosaf/saAis.py
> +++ b/python/pyosaf/saAis.py
> @@ -198,6 +198,11 @@ else:
>   """
>   super(SaNameT, self).__init__(len(name), name)
>   
> + def __str__(self):
> + """Returns the content of SaNameT
> + """
> + return self.value
> +
>   
>   class SaVersionT(Structure):
>   """Contain software versions of area implementation.
> diff --git a/python/pyosaf/saImm.py b/python/pyosaf/saImm.py
> --- a/python/pyosaf/saImm.py
> +++ b/python/pyosaf/saImm.py
> @@ -71,7 +71,7 @@ def unmarshalSaImmValue(void_ptr, value_
>   val_ptr = SaImmValueTypeMap.get(value_type)
>   if val_ptr and void_ptr:
>   if val_ptr == SaNameT:
> - return cast(void_ptr, POINTER(val_ptr))[0].value
> + return str(cast(void_ptr, POINTER(val_ptr))[0])
>   return cast(void_ptr, POINTER(val_ptr))[0]
>   return None
>   
> diff --git a/python/pyosaf/saNtf.py b/python/pyosaf/saNtf.py
> --- a/python/pyosaf/saNtf.py
> +++ b/python/pyosaf/saNtf.py
> @@ -202,9 +202,10 @@ def unmarshalSaNtfValue(void_ptr, value_
>   val_ptr = SaNtfValueTypeMap.get(value_type)
>   if val_ptr and void_ptr:
>   if val_ptr == SaNameT:
> - return cast(void_ptr, POINTER(val_ptr))[0].value
> + return str(cast(void_ptr, POINTER(val_ptr))[0])
>   return cast(void_ptr, POINTER(val_ptr))[0]
>   return None
> +
>   class _ptrVal(Structure):
>   _fields_ = [('dataOffset', SaUint16T),
>   ('dataSize', SaUint16T)]
>
> 
> --
> Mobile security can be enabling, not merely restricting. Employees who bring
> their own devices (BYOD) to work are irked by the imposition of MDM
> restrictions. Mobile Device Manager Plus allows you to control only the apps
> on BYO-devices by containerizing them, leaving personal data untouched!
> https://ad.doubleclick.net/ddm/clk/304595813;131938128;j
> ___
> Opensaf-devel mailing list
> Opensaf-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/opensaf-devel
>


--
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity 
planning reports. http://sdm.link/zohodev2dev
___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel


Re: [devel] [PATCH 1 of 1] AMFD: Correct the size of synchronizing node after headless [#1984]

2016-08-10 Thread Hans Nordebäck
Ack, code review only. The ticket no is incorrect in the subject should be 
#1894/Thanks HansN

-Original Message-
From: Minh Hon Chau [mailto:minh.c...@dektech.com.au] 
Sent: den 29 juni 2016 02:48
To: Hans Nordebäck ; nagendr...@oracle.com; 
praveen.malv...@oracle.com; Gary Lee 
Cc: opensaf-devel@lists.sourceforge.net
Subject: [PATCH 1 of 1] AMFD: Correct the size of synchronizing node after 
headless [#1984]

 osaf/services/saf/amf/amfd/ndfsm.cc |  2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)


If more than 2 payloads are joining from headless, amfd will think all nodes 
have already been synced even there's still one being in headless sync period.

The patch corrects the conditional statement that fixes the size of nodes being 
synchronized.

diff --git a/osaf/services/saf/amf/amfd/ndfsm.cc 
b/osaf/services/saf/amf/amfd/ndfsm.cc
--- a/osaf/services/saf/amf/amfd/ndfsm.cc
+++ b/osaf/services/saf/amf/amfd/ndfsm.cc
@@ -298,7 +298,7 @@ void avd_node_up_evh(AVD_CL_CB *cb, AVD_
uint32_t rc_node_up;
avnd->node_up_msg_count++;
rc_node_up = avd_count_node_up(cb);
-   if (rc_node_up == sync_nd_size-1) {
+   if (rc_node_up == sync_nd_size) {
if (cb->node_sync_tmr.is_active) {
avd_stop_tmr(cb, &cb->node_sync_tmr);
TRACE("stop NodeSync timer");

--
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity 
planning reports. http://sdm.link/zohodev2dev
___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel


Re: [devel] [PATCH 4 of 8] cpsv: Add new message to support extended SaNameT v1 [#1574]

2016-08-10 Thread A V Mahesh
Hi Hoang,

I am seeing new encode decodes done between  D to ND ,  in this patch  ( 
old cpd to new cpnd  & old cpnd to new cpd )
but not able find edu rules ,  please confirm.

Otherwise it will take unnecessary  testing effort.

If not handled please refer `osaf/libs/common/cpsv/cpsv_edu.c ` file for 
MSG_FORMAT_VER handling or any old patches

-AVM


On 8/2/2016 2:14 PM, Hoang Vo wrote:
>   osaf/libs/common/cpsv/cpsv_evt.c |  504 
> ++-
>   osaf/libs/common/cpsv/include/cpsv_evt.h |   24 +
>   osaf/services/saf/cpsv/cpd/cpd_mds.c |   84 -
>   osaf/services/saf/cpsv/cpnd/cpnd_mds.c   |   84 -
>   4 files changed, 668 insertions(+), 28 deletions(-)
>
>
> New messages supporting extended SaNameT are introduce. Encoding and decoding 
> funtions for them are also included.
>
> diff --git a/osaf/libs/common/cpsv/cpsv_evt.c 
> b/osaf/libs/common/cpsv/cpsv_evt.c
> --- a/osaf/libs/common/cpsv/cpsv_evt.c
> +++ b/osaf/libs/common/cpsv/cpsv_evt.c
> @@ -30,11 +30,14 @@
>   
>   #include "cpsv.h"
>   #include "cpa_tmr.h"
> +#include "osaf_extended_name.h"
>   
>   FUNC_DECLARATION(CPSV_CKPT_DATA);
>   static SaCkptSectionIdT *cpsv_evt_dec_sec_id(NCS_UBAID *i_ub, uint32_t 
> svc_id);
>   static uint32_t cpsv_evt_enc_sec_id(NCS_UBAID *o_ub, SaCkptSectionIdT 
> *sec_id);
>   static void cpsv_convert_sec_id_to_string(char *sec_id_str, 
> SaCkptSectionIdT *section_id);
> +static uint32_t cpsv_encode_extended_name_flat(NCS_UBAID *uba, SaNameT 
> *name);
> +static uint32_t cpsv_decode_extended_name_flat(NCS_UBAID *uba, SaNameT 
> *name);
>   
>   const char *cpa_evt_str[] = {
>   "STRING_0",
> @@ -258,6 +261,13 @@ char* cpsv_evt_str(CPSV_EVT *evt, char *
>   info->client_hdl, info->ckpt_name.value);
>   break;
>   }
> + case CPND_EVT_A2ND_CKPT_OPEN_2:
> + {
> + CPSV_A2ND_OPEN_REQ *info = &evt->info.cpnd.info.openReq;
> + snprintf(o_evt_str, len, 
> "CPND_EVT_A2ND_CKPT_OPEN_2(hdl=%llu, %s)",
> + info->client_hdl, 
> osaf_extended_name_borrow(&info->ckpt_name));
> + break;
> + }
>   case CPND_EVT_A2ND_CKPT_CLOSE:
>   {
>   CPSV_A2ND_CKPT_CLOSE *info = 
> &evt->info.cpnd.info.closeReq;
> @@ -271,6 +281,12 @@ char* cpsv_evt_str(CPSV_EVT *evt, char *
>   snprintf(o_evt_str, len, 
> "CPND_EVT_A2ND_CKPT_UNLINK(%s)", info->ckpt_name.value);
>   break;
>   }
> + case CPND_EVT_A2ND_CKPT_UNLINK_2:
> + {
> + CPSV_A2ND_CKPT_UNLINK *info = 
> &evt->info.cpnd.info.ulinkReq;
> + snprintf(o_evt_str, len, 
> "CPND_EVT_A2ND_CKPT_UNLINK_2(%s)", 
> osaf_extended_name_borrow(&info->ckpt_name));
> + break;
> + }
>   case CPND_EVT_A2ND_CKPT_RDSET:
>   {
>   CPSV_A2ND_RDSET *info = &evt->info.cpnd.info.rdsetReq;
> @@ -513,12 +529,33 @@ char* cpsv_evt_str(CPSV_EVT *evt, char *
>   case CPND_EVT_D2ND_CKPT_CREATE:
>   {
>   CPSV_D2ND_CKPT_CREATE *info = 
> &evt->info.cpnd.info.ckpt_create;
> - snprintf(o_evt_str, len, "[%llu] 
> CPND_EVT_D2ND_CKPT_CREATE(%s, create_rep=%s, active=0x%X)",
> - info->ckpt_info.ckpt_id, info->ckpt_name.value,
> + snprintf(o_evt_str, len, "[%llu] 
> CPND_EVT_D2ND_CKPT_CREATE(%s, create_rep=%s, is_act=%s, active=0x%X, 
> dest_cnt=%d)",
> + info->ckpt_info.ckpt_id, 
> osaf_extended_name_borrow(&info->ckpt_name),
>   info->ckpt_info.ckpt_rep_create ? "true" : 
> "false",
> - 
> m_NCS_NODE_ID_FROM_MDS_DEST(info->ckpt_info.active_dest));
> + info->ckpt_info.is_active_exists ? "true" : 
> "false",
> + 
> m_NCS_NODE_ID_FROM_MDS_DEST(info->ckpt_info.active_dest),
> + info->ckpt_info.dest_cnt);
>   break;
>   }
> + case CPND_EVT_D2ND_CKPT_CREATE_2:
> + {
> + CPSV_D2ND_CKPT_CREATE *info = 
> &evt->info.cpnd.info.ckpt_create;
> + snprintf(o_evt_str, len, "[%llu] 
> CPND_EVT_D2ND_CKPT_CREATE_2(%s, create_rep=%s, is_act=%s, active=0x%X, 
> dest_cnt=%d)",
> + info->ckpt_info.ckpt_id, 
> osaf_extended_name_borrow(&info->ckpt_name),
> + info->ckpt_info.ckpt_rep_create ? "true" : 
> "false",
> + info->ckpt_info.is_active_exists ? "true" : 
> "false",
> + 
> m_NCS_NODE_ID_FROM_MDS_DEST(info->ckpt_info.active_dest),
> + info->ckpt_info.dest_cnt);
> +
> +   

Re: [devel] [PATCH 1 of 1] amfnd: convert dnd_list from a linked list to vector [#1945]

2016-08-10 Thread Gary Lee
Hi Hans

Thanks for the feedback.

Gary

On 10/08/2016 9:30 PM, Hans Nordebäck wrote:
> +for (size_t i = 0; i < cb->dnd_list.size(); i++) {
>> +AVND_DND_MSG_LIST* rec = cb->dnd_list[i];
>> +osafassert(rec != nullptr);
>> +osafassert(rec->msg.type == AVND_MSG_AVD);
>> +const uint32_t msg_id = 
>> *(reinterpret_cast(&(rec->msg.info.avd->msg_info)));
> [HansN] this is different than previous version which only removed one 
> record
[Gary] Yes, I think this is more 'robust'. We have suspicions sometimes 
TIPC receive buffers may be full, and some messages may be 'dropped'.
If an ack from amfd to amfnd is dropped, then the original message is 
never removed from dnd_list. With this, the message is removed. Do you see
any drawbacks?
>> +if (msg_id <= mid) {
>> +// these messages have been acked, remove them from queue
>> +dnd_list_remove_msg(cb, rec);
>> +TRACE("remove msg %u from queue", msg_id);
>> +avnd_diq_rec_del(cb, rec);
>> +} else {
>> +break;
>> +}
>>
>>   -typedef struct avnd_dnd_msg_list_tag {
> [HansN] see Google styleguide, Struct vs. Class", probably we should 
> use struct here and "public" is not needed?
[Gary] Yes, good point. Will change before pushing.
>
>> +class AVND_DND_MSG_LIST {
>> +public:
>>   AVND_MSG msg;
>>   AVND_TMR resp_tmr;
>>   uint32_t opq_hdl;
>> -struct avnd_dnd_msg_list_tag *next;
>> -} AVND_DND_MSG_LIST;
>> -
>> -typedef struct avnd_dnd_list_tag {
>> -AVND_DND_MSG_LIST *head;
>> -AVND_DND_MSG_LIST *tail;
>> -} AVND_DND_LIST;
>> +};
>>



--
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity 
planning reports. http://sdm.link/zohodev2dev
___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel


Re: [devel] [PATCH 1 of 1] amfnd: fix amfnd crash during su and node level escalations [#1770] V2

2016-08-10 Thread Hans Nordebäck
ack, code review only/Thanks HansN


On 06/20/2016 08:35 AM, praveen.malv...@oracle.com wrote:
>   osaf/services/saf/amf/amfnd/err.cc  |  19 +++
>   osaf/services/saf/amf/amfnd/su.cc   |  16 
>   osaf/services/saf/amf/amfnd/susm.cc |   2 +-
>   3 files changed, 36 insertions(+), 1 deletions(-)
>
>
> AMFND crashes during sufailover recovery which resulted because comp does not 
> response
> with SA_AIS_OK for CSI remove callback in su lock operation.
>
> Applicable to sufailover, node-failover and node-switchover along with 
> su-failover.
> AMFND calls oper_done logic multiple times. This logic must be called when 
> AMFND
> has to respond to AMFD for pending assignments. In these recovery policies, 
> AMFD will
> perform recovery of assignments on escalation request. So calling oper_done 
> logic for
> these recoveries must be avoided in AMFND.
> There is also one more case when same crash is observed. If component faults 
> with
> su-failover recovery after responding successfully for quiesced state during 
> SU lock.
> Since AMFND responds successfully for the quiesced state, it gets removal of 
> assignment.
> AMFND crashes during removal of assignment.
>
> Patach solves problem by resetting the pending assignment flag in SU for 
> these recovery
> policies. AMFD will perform recovery when it gets recovery request from AMFND.
> For second crash, when AMFND gets removal of assignment during su-failover, 
> it will discard
> removal of assignment.
> In both the cases, AMFD takes care of repyling for admin op as part ofr 
> su-failover recovery.
>
> diff --git a/osaf/services/saf/amf/amfnd/err.cc 
> b/osaf/services/saf/amf/amfnd/err.cc
> --- a/osaf/services/saf/amf/amfnd/err.cc
> +++ b/osaf/services/saf/amf/amfnd/err.cc
> @@ -841,6 +841,13 @@ uint32_t avnd_err_rcvr_su_failover(AVND_
>   reset_suRestart_flag(su);
>   su->admin_op_Id = static_cast(0);
>   }
> + /* If SU faulted during assignments, reset its pending assignment flag. 
> AMFD will perform
> +fail-over as a part of recovery request.*/
> + if (m_AVND_SU_IS_ALL_SI(su)) {
> + TRACE_1("Reset pending assignment flag in su.");
> + m_AVND_SU_ALL_SI_RESET(su);
> + }
> +
>   //Remember component-failover/su-failover context.
>   m_AVND_SU_FAILOVER_SET(failed_comp->su);
>   
> @@ -922,6 +929,12 @@ uint32_t avnd_err_rcvr_node_switchover(A
>   if (m_AVND_SU_IS_RESTART(failed_su))
>   failed_su->admin_op_Id = static_cast(0);
>   
> + /* If SU faulted during assignments, reset its pending assignment flag. 
> AMFD will perform
> +fail-over as a part of recovery request.*/
> + if ((m_AVND_SU_IS_ALL_SI(failed_su)) && (failed_comp->su->sufailover == 
> true)) {
> + TRACE_1("Reset pending assignment flag in su.");
> + m_AVND_SU_ALL_SI_RESET(failed_su);
> + }
>   /* In nodeswitchover context:
>  a)If saAmfSUFailover is set for the faulted SU then this SU will be 
> failed-over
>   as a single entity.
> @@ -1016,6 +1029,12 @@ uint32_t avnd_err_rcvr_node_failover(AVN
>   reset_suRestart_flag(failed_su);
>   failed_su->admin_op_Id = static_cast(0);
>   }
> + /* If SU faulted during assignments, reset its pending assignment flag. 
> AMFD will perform
> +fail-over as a part of recovery request or node down.*/
> + if (m_AVND_SU_IS_ALL_SI(failed_su)) {
> + TRACE_1("Reset pending assignment flag in su.");
> + m_AVND_SU_ALL_SI_RESET(failed_su);
> + }
>   /* Unordered cleanup of all local application components */
>   for (comp = (AVND_COMP *)ncs_patricia_tree_getnext(&cb->compdb, 
> (uint8_t *)nullptr);
> comp != nullptr;
> diff --git a/osaf/services/saf/amf/amfnd/su.cc 
> b/osaf/services/saf/amf/amfnd/su.cc
> --- a/osaf/services/saf/amf/amfnd/su.cc
> +++ b/osaf/services/saf/amf/amfnd/su.cc
> @@ -430,6 +430,22 @@ uint32_t avnd_evt_avd_info_su_si_assign_
>   goto done;
>   }
>   }
> + /*
> +SU failover and Node-switchover (with sufailover true) is in 
> progress
> +and AMFND gets deletion of assignment for failed SU. Since 
> AMFND launches
> +cleanup of all the components failed SU, it must discard 
> deletion of assignment
> +in it. After successful cleanup of all the components, AMFND 
> sends recovery
> +request to AMFD and it will take care of failover of this 
> failed SU. Also AMFD
> +will be able to respond to any pending admin op while 
> processing recovery request.
> +For Node-failover, assignment can be discarded for any SU as 
> AMFND launches clean up
> +of all the components.
> +  */
> + if ((sufailover_in_progress(su) || 
> sufailover_during_nodeswitch

Re: [devel] [PATCH 1 of 1] amfnd: convert dnd_list from a linked list to vector [#1945]

2016-08-10 Thread Hans Nordebäck
ack, code review only. Minor comments below. /Thanks HansN


On 08/10/2016 08:25 AM, Gary Lee wrote:
>   osaf/services/saf/amf/amfnd/di.cc  |  100 
> +++-
>   osaf/services/saf/amf/amfnd/include/avnd_cb.h  |4 +-
>   osaf/services/saf/amf/amfnd/include/avnd_di.h  |   37 +-
>   osaf/services/saf/amf/amfnd/include/avnd_mds.h |   11 +--
>   osaf/services/saf/amf/amfnd/proxy.cc   |   15 ++-
>   osaf/services/saf/amf/amfnd/verify.cc  |   10 +--
>   6 files changed, 64 insertions(+), 113 deletions(-)
>
>
> diff --git a/osaf/services/saf/amf/amfnd/di.cc 
> b/osaf/services/saf/amf/amfnd/di.cc
> --- a/osaf/services/saf/amf/amfnd/di.cc
> +++ b/osaf/services/saf/amf/amfnd/di.cc
> @@ -36,29 +36,7 @@
>   
>   #include 
>   #include "avnd.h"
> -
> -/* macro to push the AvD msg parameters (to the end of the list) */
> -#define m_AVND_DIQ_REC_PUSH(cb, rec) \
> -{ \
> -   AVND_DND_LIST *list = &((cb)->dnd_list); \
> -   if (!(list->head)) \
> -   list->head = (rec); \
> -   else \
> -  list->tail->next = (rec); \
> -   list->tail = (rec); \
> -}
> -
> -/* macro to pop the record (from the beginning of the list) */
> -#define m_AVND_DIQ_REC_POP(cb, o_rec) \
> -{ \
> -   AVND_DND_LIST *list = &((cb)->dnd_list); \
> -   if (list->head) { \
> -  (o_rec) = list->head; \
> -  list->head = (o_rec)->next; \
> -  (o_rec)->next = 0; \
> -  if (list->tail == (o_rec)) list->tail = 0; \
> -   } else (o_rec) = 0; \
> -}
> +#include 
>   
>   static uint32_t avnd_node_oper_req(AVND_CB *cb, AVSV_PARAM_INFO *param)
>   {
> @@ -439,7 +417,6 @@ void avnd_send_node_up_msg(void)
>   {
>   AVND_CB *cb = avnd_cb;
>   AVND_MSG msg = {};
> - AVND_DND_MSG_LIST *pending_rec = 0;
>   uint32_t rc;
>   
>   TRACE_ENTER();
> @@ -455,7 +432,7 @@ void avnd_send_node_up_msg(void)
>   }
>   
>   // We don't send node_up if it has already been sent and waiting for ACK
> - for (pending_rec = cb->dnd_list.head; pending_rec != nullptr; 
> pending_rec = pending_rec->next) {
> + for (auto pending_rec : cb->dnd_list) {
>   if (pending_rec->msg.info.avd->msg_type == 
> AVSV_N2D_NODE_UP_MSG) {
>   TRACE("Don't send another node_up since it has been 
> sent and waiting for ack");
>   goto done;
> @@ -626,11 +603,11 @@ uint32_t avnd_evt_mds_avd_dn_evh(AVND_CB
>   
>   if (cb->scs_absence_max_duration == 0) {
>   // check for pending messages TO director
> - if ((cb->dnd_list.head != nullptr)) {
> + if ((cb->dnd_list.empty() == false)) {
>   uint32_t no_pending_msg = 0;
> - AVND_DND_MSG_LIST *rec = 0;
> - for (rec = cb->dnd_list.head; rec != nullptr; rec = 
> rec->next, no_pending_msg++) {
> + for (auto rec : cb->dnd_list) {
>   osafassert(rec->msg.type == AVND_MSG_AVD);
> + no_pending_msg++;
>   }
>   
>   /* Don't issue reboot if it has been already issued.*/
> @@ -1042,7 +1019,7 @@ uint32_t avnd_di_msg_send(AVND_CB *cb, A
>done:
>   if (NCSCC_RC_SUCCESS != rc && rec) {
>   /* pop & delete */
> - m_AVND_DIQ_REC_FIND_POP(cb, rec);
> + dnd_list_remove_msg(cb, rec);
>   avnd_diq_rec_del(cb, rec);
>   }
>   TRACE_LEAVE2("%u", rc);
> @@ -1149,15 +1126,22 @@ uint32_t avnd_di_reg_su_rsp_snd(AVND_CB
>   
> **/
>   void avnd_di_msg_ack_process(AVND_CB *cb, uint32_t mid)
>   {
> - AVND_DND_MSG_LIST *rec = 0;
> -
> - /* find & pop the matching record */
> - m_AVND_DIQ_REC_FIND(cb, mid, rec);
> - if (rec) {
> - m_AVND_DIQ_REC_FIND_POP(cb, rec);
> - avnd_diq_rec_del(cb, rec);
> + TRACE_ENTER2("%u", mid);
> + for (size_t i = 0; i < cb->dnd_list.size(); i++) {
> + AVND_DND_MSG_LIST* rec = cb->dnd_list[i];
> + osafassert(rec != nullptr);
> + osafassert(rec->msg.type == AVND_MSG_AVD);
> + const uint32_t msg_id = 
> *(reinterpret_cast(&(rec->msg.info.avd->msg_info)));
[HansN] this is different than previous version which only removed one 
record
> + if (msg_id <= mid) {
> + // these messages have been acked, remove them from 
> queue
> + dnd_list_remove_msg(cb, rec);
> + TRACE("remove msg %u from queue", msg_id);
> + avnd_diq_rec_del(cb, rec);
> + } else {
> + break;
> + }
>   }
> -
> + TRACE_LEAVE();
>   return;
>   }
>   
> @@ -1174,17 +1158,11 @@ void avnd_di_msg_ack_process(AVND_CB *cb
>   
> **/
>   void avnd_diq_del(AVND_CB *cb)
>   {
> - AVND_

Re: [devel] [PATCH 6 of 8] cpsv: Apply new messages supporting extended SaNameT to CPD, CPND, and CPA v1 [#1574]

2016-08-10 Thread A V Mahesh
Hi Hoan,

I hope the patch  published On 8/2/2016 2:14 PM is the New version  V2

If you are sending new version please update   V1 to V2 , form next time 
on-words

-AVM


On 8/2/2016 2:17 PM, Vo Minh Hoang wrote:
> Dear Mahesh,
>
> I have just submitted the V3 patch fixing source code following your
> comment.
> I also update readme file that is attached to this email.
> Please tell me if you have any further inquiry.
>
> Thank you and best regards,
> Hoang
>
> -Original Message-
> From: A V Mahesh [mailto:mahesh.va...@oracle.com]
> Sent: Friday, July 29, 2016 1:27 PM
> To: Vo Minh Hoang 
> Cc: opensaf-devel@lists.sourceforge.net
> Subject: Re: [PATCH 6 of 8] cpsv: Apply new messages supporting extended
> SaNameT to CPD, CPND, and CPA v1 [#1574]
>
> Hi ,
>
> I have proved some code related minor comment in 4 of 8 , 6 of 8 & 8 of
> 8 , please  address them also in new patch(s).
>
> Reading testing :
>
> On 7/29/2016 7:49 AM, Vo Minh Hoang wrote:
>> We do not have specific test case and environment for in-service update.
>> So my test work is based on osaftest cases.
>>
>> I tested with old d - new nd and new d - old nd cases.
> I started basic testing with  one new Controller  & one old Controller and
> tow Old payload setup.
> I observed some encode/decode issue  by running simple  ` /usr/bin/ckpttest`
>
> Even I was not able to proceed with other testing which not related to LONG
> DN)( continuously receiving SA_AIS_ERR_TRY_AGAIN) Please re-visit the all
> encode & decode function that you have introduced run  the basic testing
> with the above setup running application on ( old nodes/application  and new
> nodes/application )
>
> traces On Old Node ( with out patch )
>
> 
> 
>
> Jul 29 11:34:16 SC-2 osafckptnd[5233]: ER cpnd mds decode failed Jul 29
> 11:34:16 SC-2 osafckptnd[5233]: ER cpnd mds decode failed Jul 29 11:34:26
> SC-2 osafckptnd[5233]: ER cpnd mds decode failed Jul 29 11:34:27 SC-2
> osafckptnd[5233]: ER cpnd mds decode failed Jul 29 11:34:27 SC-2
> osafckptnd[5233]: ER cpnd mds decode failed
>
> 
> ==
>
> Jul 29 11:34:04.216980 osafckptnd [5233:cpnd_mds.c:0225] >>
> cpnd_mds_callback Jul 29 11:34:04.217086 osafckptnd [5233:cpnd_mds.c:0267]
> << cpnd_mds_callback Jul 29 11:34:04.217100 osafckptnd
> [5233:cpnd_mds.c:0225] >> cpnd_mds_callback Jul 29 11:34:04.217129
> osafckptnd [5233:cpnd_mds.c:0729] << cpnd_mds_rcv Jul 29 11:34:04.217175
> osafckptnd [5233:cpnd_mds.c:0267] << cpnd_mds_callback Jul 29
> 11:34:04.217240 osafckptnd [5233:cpsv_evt.c:2219] TR cpnd <<== [9]
> CPSV_EVT_ND2ND_CKPT_SECT_CREATE_REQ(sec_id=0x0B15) from node 0x2010F Jul 29
> 11:34:04.217254 osafckptnd [5233:cpnd_evt.c:2626] >>
> cpnd_evt_proc_nd2nd_ckpt_sect_create
> Jul 29 11:34:04.217264 osafckptnd [5233:cpnd_evt.c:2632] T4 cpnd ckpt node
> get failed for ckpt_id:9 Jul 29 11:34:04.217272 osafckptnd
> [5233:cpnd_mds.c:1004] >> cpnd_mds_send_rsp Jul 29 11:34:04.217282
> osafckptnd [5233:cpsv_evt.c:2213] TR cpnd ==>> [0]
> CPSV_EVT_ND2ND_CKPT_SECT_ACTIVE_CREATE_RSP(err=6) to node 0x2010F Jul 29
> 11:34:04.217301 osafckptnd [5233:cpnd_mds.c:0225] >> cpnd_mds_callback Jul
> 29 11:34:04.217310 osafckptnd [5233:cpnd_mds.c:0291] >> cpnd_mds_enc Jul 29
> 11:34:04.217331 osafckptnd [5233:cpnd_mds.c:0267] << cpnd_mds_callback Jul
> 29 11:34:04.217464 osafckptnd [5233:cpnd_mds.c:1028] << cpnd_mds_send_rsp
> Jul 29 11:34:04.217483 osafckptnd [5233:cpnd_evt.c:2740] <<
> cpnd_evt_proc_nd2nd_ckpt_sect_create
> Jul 29 11:34:04.217493 osafckptnd [5233:cpnd_evt.c:4433] >> cpnd_evt_destroy
> Jul 29 11:34:04.217503 osafckptnd [5233:cpnd_evt.c:4619] << cpnd_evt_destroy
> Jul 29 11:34:04.719653 osafckptnd [5233:cpnd_mds.c:0225] >>
> cpnd_mds_callback Jul 29 11:34:04.719758 osafckptnd [5233:cpnd_mds.c:0267]
> << cpnd_mds_callback Jul 29 11:34:04.719772 osafckptnd
> [5233:cpnd_mds.c:0225] >> cpnd_mds_callback Jul 29 11:34:04.719801
> osafckptnd [5233:cpnd_mds.c:0729] << cpnd_mds_rcv Jul 29 11:34:04.719812
> osafckptnd [5233:cpnd_mds.c:0267] << cpnd_mds_callback
>
> 
> =
>
> 520|0 88 03703659 1 10|
> 520|0 88 03703659 1 11| SUCCESS   : ckpt with all flags on created
> 520|0 88 03703659 1 12| Return Value  : SA_AIS_OK
> 520|0 88 03703659 1 13|
> 520|0 88 03703659 1 14| SUCCESS   : Unlinked ckpt all replica
> 520|0 88 03703659 1 15| Return Value  : SA_AIS_OK
> 520|0 88 03703659 1 16|
> 520|0 88 03703659 1 17| FAILED: Section 11 created in ckpt
> 520|0 88 03703659 1 18| Return Value  : SA_AIS_ERR_TRY_AGAIN
>
> 
> =
>
> -AVM
>
>
> On 7/29/2016 7:49 AM, Vo Minh Hoang wrote:
>> Dear Mahesh,
>>
>> We do not have specific test case and environment for in-se

Re: [devel] [PATCH 2 of 2] AMFND: Admin operation continuation if csi callback completes during headless [#1725 part 1] V1

2016-08-10 Thread Nagendra Kumar
Hi Minh,

I was doing upgrade and downgrade, and I faced the following issue:

Steps:
#0 Both controllers are up(SC-1 Act, SC-2 Std) without the patch.
#1 Stop standby controller(SC-2) and upgrade with the patch and start SC-2 as 
Standby.
#2 Perform SI switchover (2N SI), so that SC-2 is Act (with the patch) and SC-1 
is Standby(without the patch). Stop Standby controller(SC-1) and upgrade with 
the patch and start SC-1 as Standby.

Got error in syslog in SC-1 (Act):
Aug 10 16:37:45 PM_SC-2 osafamfd[18234]: ER exec: create FAILED 12
Aug 10 16:37:45 PM_SC-2 osafrded[18164]: NO Peer up on node 0x2010f
Aug 10 16:37:45 PM_SC-2 osaffmd[18173]: NO clm init OK
Aug 10 16:37:45 PM_SC-2 osaffmd[18173]: NO Peer clm node name: SC-1
Aug 10 16:37:45 PM_SC-2 osafrded[18164]: NO Got peer info request from node 
0x2010f with role STANDBY
Aug 10 16:37:45 PM_SC-2 osafrded[18164]: NO Got peer info response from node 
0x2010f with role STANDBY
Aug 10 16:37:45 PM_SC-2 osafamfd[18234]: ER exec: create FAILED 12


And there is no SUSI for SC-1:
PM_SC-2:/home/nagu/views/staging-1725 # /etc/init.d/opensafd  status
safSISU=safSu=SC-2\,safSg=NoRed\,safApp=OpenSAF,safSi=NoRed2,safApp=OpenSAF
saAmfSISUHAState=ACTIVE(1)
safSISU=safSu=SC-2\,safSg=2N\,safApp=OpenSAF,safSi=SC-2N,safApp=OpenSAF
saAmfSISUHAState=ACTIVE(1)


Thanks
-Nagu

> -Original Message-
> From: Minh Hon Chau [mailto:minh.c...@dektech.com.au]
> Sent: 05 August 2016 02:50
> To: hans.nordeb...@ericsson.com; Nagendra Kumar; Praveen Malviya;
> gary@dektech.com.au; long.hb.ngu...@dektech.com.au;
> minh.c...@dektech.com.au
> Cc: opensaf-devel@lists.sourceforge.net
> Subject: [PATCH 2 of 2] AMFND: Admin operation continuation if csi callback
> completes during headless [#1725 part 1] V1
> 
>  osaf/services/saf/amf/amfnd/di.cc |  199 
> +
>  osaf/services/saf/amf/amfnd/include/avnd_di.h |1 +
>  2 files changed, 134 insertions(+), 66 deletions(-)
> 
> 
> The patch buffers susi_resp_msg during headless stage and resend it to
> AMFD after headless.
> 
> diff --git a/osaf/services/saf/amf/amfnd/di.cc
> b/osaf/services/saf/amf/amfnd/di.cc
> --- a/osaf/services/saf/amf/amfnd/di.cc
> +++ b/osaf/services/saf/amf/amfnd/di.cc
> @@ -804,11 +804,6 @@ uint32_t avnd_di_susi_resp_send(AVND_CB
>   if (cb->term_state ==
> AVND_TERM_STATE_OPENSAF_SHUTDOWN_STARTED)
>   return rc;
> 
> - if (cb->is_avd_down == true) {
> -m_AVND_SU_ALL_SI_RESET(su);
> - return rc;
> - }
> -
>   // should be in assignment pending state to be here
>   osafassert(m_AVND_SU_IS_ASSIGN_PEND(su));
> 
> @@ -819,64 +814,76 @@ uint32_t avnd_di_susi_resp_send(AVND_CB
>   TRACE_ENTER2("Sending Resp su=%s, si=%s, curr_state=%u,
> prv_state=%u", su->name.value, curr_si->name.value,curr_si-
> >curr_state,curr_si->prv_state);
>   /* populate the susi resp msg */
>   msg.info.avd = new AVSV_DND_MSG();
> -msg.type = AVND_MSG_AVD;
> -msg.info.avd->msg_type = AVSV_N2D_INFO_SU_SI_ASSIGN_MSG;
> -msg.info.avd->msg_info.n2d_su_si_assign.msg_id = ++(cb-
> >snd_msg_id);
> -msg.info.avd->msg_info.n2d_su_si_assign.node_id = cb-
> >node_info.nodeId;
> -if (si) {
> -msg.info.avd->msg_info.n2d_su_si_assign.single_csi =
> -((si->single_csi_add_rem_in_si == 
> AVSV_SUSI_ACT_BASE) ?
> false : true);
> -}
> -TRACE("curr_assign_state '%u'", curr_si->curr_assign_state);
> -msg.info.avd->msg_info.n2d_su_si_assign.msg_act =
> -(m_AVND_SU_SI_CURR_ASSIGN_STATE_IS_ASSIGNED(curr_si) ||
> - m_AVND_SU_SI_CURR_ASSIGN_STATE_IS_ASSIGNING(curr_si)) ?
> -((!curr_si->prv_state) ? AVSV_SUSI_ACT_ASGN :
> AVSV_SUSI_ACT_MOD) : AVSV_SUSI_ACT_DEL;
> -msg.info.avd->msg_info.n2d_su_si_assign.su_name = su->name;
> -if (si) {
> -msg.info.avd->msg_info.n2d_su_si_assign.si_name = si->name;
> -if (AVSV_SUSI_ACT_ASGN == si->single_csi_add_rem_in_si) {
> -TRACE("si->curr_assign_state '%u'", curr_si-
> >curr_assign_state);
> -msg.info.avd->msg_info.n2d_su_si_assign.msg_act =
> -
> (m_AVND_SU_SI_CURR_ASSIGN_STATE_IS_ASSIGNED(curr_si) ||
> -
> m_AVND_SU_SI_CURR_ASSIGN_STATE_IS_ASSIGNING(curr_si)) ?
> -AVSV_SUSI_ACT_ASGN : AVSV_SUSI_ACT_DEL;
> -}
> -}
> -msg.info.avd->msg_info.n2d_su_si_assign.ha_state =
> -(SA_AMF_HA_QUIESCING == curr_si->curr_state) ?
> SA_AMF_HA_QUIESCED : curr_si->curr_state;
> -msg.info.avd->msg_info.n2d_su_si_assign.error =
> -(m_AVND_SU_SI_CURR_ASSIGN_STATE_IS_ASSIGNED(curr_si) ||
> - m_AVND_SU_SI_CURR_ASSIGN_STATE_IS_REMOVED(curr_si)) ?
> NCSCC_RC_SUCCESS : NCSCC_RC_FAILURE;
> + msg.type = AVND_MSG_AVD;
> + msg.info.avd->msg_type = AVSV_N2D_INFO_SU_

Re: [devel] [PATCH 1 of 1] imm:send 2PBE preload information for controller IMMND [#1925]

2016-08-10 Thread Neelakanta Reddy
Hi Zoran,

comments inline.



On 2016/08/09 07:55 PM, Zoran Milinkovic wrote:
> Hi Neelakanta,
>
> When IMM is running in 2PBE mode, the slave PBE is running on the standby 
> node (where the standby IMMD is).
The #1925 is about pre-load. When 2PBE is enabled and both controllers 
are started at same time, the IMMD will determine from which node the 
loading should start based on the pre-load information sent by 
controller IMMNDs. If both the pre-load information is same, then 
standby IMMND is chosen as coordinator. Otherwise base on the pre-load 
information that IMMND is chosen as coordinator.

Only IMMND at controllers can send  pre-load information. From the #79 
patch, the standby role is given only when the amfd comes up.
Because, of this delay the IMMND or active IMMD does not register as 
standby, pre-load information is not sent to active IMMD.
  If the latest information is present at standby controller, then the 
cluster will not load with latest imm.db.
> In the document update you wrote "There is a chance that chosen standby immnd 
> can be from different node than the actual node which got standby role.".
In case of spares, there are more than two controllers, and there is a 
chance, the all spares can sent pre-load information. The latest chosen 
IMMND for loading may not be given standby role.

> A node receives "canBeCoord" with value 2 only if the node is a controller. 
> So, the part with reading "node_type" file can be skipped to determine if the 
> node is a controller or not, and rely on the value from "canBeCoord".
> In the document update, you wrote that it is not recommended to run 2PBE with 
> spare nodes. It means that it can run with spare nodes. In this case every 
> node will be a controller. "controller" string will be written in node_type 
> file on every node.
when spares are configured, 2PBE is not recommended.
>
> If IMMND on a controller was introduced earlier (in NCSMDS_RED_UP event) or 
> in node introduce message, node_info->isOnController is set to true. Then in 
> NCSMDS_RED_DOWN event node_info->isOnController should be set to false. 
> Otherwise node_info->isOnController of earlier controllers will remain true 
> value.
>
> One more detail that is out of this patch, but can be included in the patch.
> Shouldn't "cb->immd_remote_id" be set to 0 in NCSMDS_RED_DOWN event when 
> "cb->immd_remote_up" is set to FALSE ?
>
> Other minor comments inline.
>
>
> -Original Message-
> From: reddy.neelaka...@oracle.com [mailto:reddy.neelaka...@oracle.com]
> Sent: den 26 juli 2016 13:21
> To: Zoran Milinkovic; Hung Duc Nguyen
> Cc: opensaf-devel@lists.sourceforge.net
> Subject: [PATCH 1 of 1] imm:send 2PBE preload information for controller 
> IMMND [#1925]
>
>   osaf/services/saf/immsv/README.2PBE|   7 +
>   osaf/services/saf/immsv/immd/immd_evt.c|  38 
> +++--
>   osaf/services/saf/immsv/immnd/immnd_cb.h   |   1 +
>   osaf/services/saf/immsv/immnd/immnd_evt.c  |   2 +-
>   osaf/services/saf/immsv/immnd/immnd_main.c |  22 +
>   5 files changed, 66 insertions(+), 4 deletions(-)
>
>
> with the #79 patch, the mds_register of standby is delayed until amfd gives 
> role.
> Because of this the standby IMMND is not able to send pr-load information.
>
> The patch sends preload information by checking node_type. If the node_type is
> controller the preload information is sent.
>
> diff --git a/osaf/services/saf/immsv/README.2PBE 
> b/osaf/services/saf/immsv/README.2PBE
> --- a/osaf/services/saf/immsv/README.2PBE
> +++ b/osaf/services/saf/immsv/README.2PBE
> @@ -175,3 +175,10 @@ toggle this flag on.
>   For "normal", but unplanned, processor restarts, we recommend that this 
> flag not be
>   toggled on. This means that for such processor restarts, persistent writes 
> will not be
>   allowed untill both SCs are available again.
> +
> +2PBE with spares(#79 & #1925)
> +
> +From OpenSAG 5.0 the mds_register for IMMD is delayed until amfd comes up 
> and gives role.
>
> [Zoran] Typo. OpenSAF instead of OpenSAG
update, while pushing.
> +Because of this the standby role is delayed. There is a chance that chosen 
> standby immnd
> +can be from different node than the actual node which got standby role. It 
> is not
> +recommended to configure 2PBE with spares.
> diff --git a/osaf/services/saf/immsv/immd/immd_evt.c 
> b/osaf/services/saf/immsv/immd/immd_evt.c
> --- a/osaf/services/saf/immsv/immd/immd_evt.c
> +++ b/osaf/services/saf/immsv/immd/immd_evt.c
> @@ -732,7 +732,11 @@ static void immd_accept_node(IMMD_CB *cb
>   cb->immnd_coord = node_info->immnd_key;
>   cb->payload_coord_dest = node_info->immnd_dest;
>   node_info->isCoord = true;
> - }
> + } else if(cb->immnd_coord == 0 && cb->mIs2Pbe){
> + LOG_NO("IMMND found at %x Cluster is loading. 2PBE configured 
> => Wait.", node_info->immnd_key);
> + accept_evt.info.immnd.info.ctrl

Re: [devel] [PATCH 1 of 1] ntfsv: refactor logging long dn notification [#1585]

2016-08-10 Thread Vu Minh Nguyen
Hi Lennart,

Ok. I will put them into test cases. And will send the update out for review
after done. Thanks.

Regards, Vu

> -Original Message-
> From: Lennart Lund [mailto:lennart.l...@ericsson.com]
> Sent: Wednesday, August 10, 2016 1:56 PM
> To: praveen malviya ; Vu Minh Nguyen
> ; Minh Hon Chau
> 
> Cc: opensaf-devel@lists.sourceforge.net
> Subject: RE: [PATCH 1 of 1] ntfsv: refactor logging long dn notification
> [#1585]
> 
> Hi
> 
> Why not make this part of the test cases? Change the configuration IMM
> attributes, run the test case and change back again to clean up
> 
> Thanks
> Lennart
> 
> > -Original Message-
> > From: praveen malviya [mailto:praveen.malv...@oracle.com]
> > Sent: den 10 augusti 2016 07:53
> > To: Vu Minh Nguyen ; Minh Hon Chau
> > ; Lennart Lund
> 
> > Cc: opensaf-devel@lists.sourceforge.net
> > Subject: Re: [PATCH 1 of 1] ntfsv: refactor logging long dn notification
> [#1585]
> >
> > Hi Vu,
> >
> > Thanks for the information.
> > I think your suggested information must go in README file.
> > Ack from me.
> >
> > Thanks,
> > Praveen
> >
> >
> > On 10-Aug-16 8:46 AM, Vu Minh Nguyen wrote:
> > > Hi Praveen,
> > >
> > > The notification and notifying objects are truncated because we did
not
> > > change default attribute values before running test.
> > >
> > > Following changes should be done before running test:
> > > 1) The field size of @No and @Ng tokens in `saLogStreamLogFileFormat`
> > > In default, the field-size value is 30. Means, the notification and
> > > notifying objects are limited to 30 characters.
> > > For long DN test, we should remove  the . E.g: change
default
> > > "@No30" to "@No".
> > >
> > > 2) The fixed log record size - `saLogStreamFixedLogRecordSize`
> > > In default, its value is 200. A whole log record is limited to this
number
> > > of characters.
> > > We should change it to 0, means variable log record size.
> > >
> > > 3) Max log record size - `logMaxLogrecsize` in class `
OpenSafLogConfig`
> > > In default, max log record size is limited to 1024 characters.
> > > We should change it to a bigger number. Max value is 65535.
> > >
> > > Example:
> > > # immcfg -a saLogStreamFixedLogRecordSize=0 -a
> > saLogStreamLogFileFormat="@Cr
> > > @Ct @Nt @Ne6 @No @Ng \"@Cb\""
> > safLgStrCfg=saLogAlarm,safApp=safLogService
> > > # immcfg -a logMaxLogrecsize=65535 logConfig=1,safApp=safLogService
> > >
> > > We can consider to put these information into the ~/tests/ntfsv/README
> > file.
> > >
> > > Regards, Vu
> > >
> > >> -Original Message-
> > >> From: praveen malviya [mailto:praveen.malv...@oracle.com]
> > >> Sent: Tuesday, August 9, 2016 6:46 PM
> > >> To: Vu Minh Nguyen ; 'minh chau'
> > >> ; 'Lennart Lund'
> > 
> > >> Cc: opensaf-devel@lists.sourceforge.net
> > >> Subject: Re: [PATCH 1 of 1] ntfsv: refactor logging long dn
notification
> > >> [#1585]
> > >>
> > >> Hi Vu,
> > >>
> > >> This patch is doing that. My question was any truncation being done
> from
> > >> log service after taking a long Dn notificaion from NTF.
> > >>
> > >> For example: When executed first ntf long dn test: ntftest 36 1
> > >>
> > >> LOG service logs these notification in
> saLogAlarm_20160809_165614.log
> > as:
> > >>   10 0x146920b67187c6f0 0x146920b67187c6f0 0x4001
> > >> AA
> > >> BB "this is
> > >> additional text info"
> > >>   11 0x146920b67187c6f0 0x146920b67187c6f0 0x4001 AMF BLABLA
> > >> Component
> > >>  AMF BLABLA Entity  "this is additional text
info"
> > >>
> > >> In the first notification above, notification and notifying objects
are
> > >> truncated. Do we need to increase the size of log service record?
> > >>
> > >> Thanks,
> > >> Praveen
> > >>
> > >> On 05-Aug-16 8:40 AM, Vu Minh Nguyen wrote:
> > >>> Hi Praveen,
> > >>>
> > >>> Truncation is removed as LOG supports Long DN now. Means, NTF
> would
> > >> not get
> > >>> INVALID_PARAM if logging longdn-contained notifications.
> > >>>
> > >>> Regards, Vu
> > >>>
> >  -Original Message-
> >  From: praveen malviya [mailto:praveen.malv...@oracle.com]
> >  Sent: Thursday, August 4, 2016 8:24 PM
> >  To: Vu Minh Nguyen ; minh chau
> >  ; Lennart Lund
> > >> 
> >  Cc: opensaf-devel@lists.sourceforge.net
> >  Subject: Re: [PATCH 1 of 1] ntfsv: refactor logging long dn
> > > notification
> >  [#1585]
> > 
> >  Hi Vu,
> > 
> >  TWith this patch Ntf will not perform any truncation on long dn
while
> >  saflogging alrams.Is it with the log service (after supporting long
dn)
> >  also or log service is performing any truncation before logging?
> > 
> > 
> >  Thanks,
> >  Praveen
> > 
> >  On 22-Jul-16 4:46 PM, Vu Minh Nguyen wrote:
> > >  osaf/services/saf/ntfsv/ntfs/NtfLogger.cc |  51
> > >>> +++--
> >  -
> > >  1 files changed, 13 insertions(+), 38 deletions(-)
> > >
> > >
> > > Remove