Hi Gary, Nguyen, OK, so let remove assert(). I will send out next version soon.
Best Regards, Thuan -----Original Message----- From: Nguyen Luu <nguyen.tk....@dektech.com.au> Sent: Wednesday, July 11, 2018 1:32 PM To: Gary Lee <gary....@dektech.com.au>; thuan.tran <thuan.t...@dektech.com.au>; lennart.l...@ericsson.com Cc: opensaf-devel@lists.sourceforge.net Subject: Re: [PATCH 1/1] smf: use cb_lock to sync cbk count access between threads [#2882] Hi Thuan, I also agree with Gary about removing assert(). Other changes look fine. Thanks, Nguyen On 7/11/2018 12:52 PM, Gary Lee wrote: > Hi Thuan > > Looks OK to me, but I would remove the assert. We shouldn't do that in > library code. > > Thanks > Gary > > On 10/7/18, 6:52 pm, "thuan.tran" <thuan.t...@dektech.com.au> wrote: > > Sometimes, callback agent dispatch and fail at saSmfReponse() > because cbk list is empty, agent by somehow handle evt before increase > cbk count. To avoid this, use cb_lock to sync cbk count acess between > threads. > --- > src/smf/agent/smfa_mds.c | 7 ++++++- > src/smf/agent/smfa_utils.c | 1 + > 2 files changed, 7 insertions(+), 1 deletion(-) > > diff --git a/src/smf/agent/smfa_mds.c b/src/smf/agent/smfa_mds.c > index 3d288b5eb..ededbaa55 100644 > --- a/src/smf/agent/smfa_mds.c > +++ b/src/smf/agent/smfa_mds.c > @@ -243,7 +243,11 @@ uint32_t smfa_mds_rcv_cbk(MDS_CALLBACK_RECEIVE_INFO > *rcv_evt) > return NCSCC_RC_SUCCESS; > } > > - /* TODO: I need to take READ LOCK here. But in MDS thread ???*/ > + if (m_NCS_LOCK(&cb->cb_lock, NCS_LOCK_WRITE) != > NCSCC_RC_SUCCESS) { > + LOG_ER("SMFA: Cb lock acquire FAILED."); > + TRACE_LEAVE(); > + return NCSCC_RC_FAILURE; > + } > client_info = cb->smfa_client_info_list; > while (NULL != client_info) { > /* If filter matches, post the evt to the corresponding > MBX.*/ > @@ -252,6 +256,7 @@ uint32_t smfa_mds_rcv_cbk(MDS_CALLBACK_RECEIVE_INFO > *rcv_evt) > filter_match = true; > client_info = client_info->next_client; > } > + m_NCS_UNLOCK(&cb->cb_lock, NCS_LOCK_WRITE); > > /* If filters dont match, respond to ND as SA_AIS_OK*/ > if (false == filter_match) { > diff --git a/src/smf/agent/smfa_utils.c b/src/smf/agent/smfa_utils.c > index fb31a9ae1..b250e9bc2 100644 > --- a/src/smf/agent/smfa_utils.c > +++ b/src/smf/agent/smfa_utils.c > @@ -715,6 +715,7 @@ uint32_t smfa_cbk_filter_match(SMFA_CLIENT_INFO > *client_info, > "SMFA: Posting to MBX > failed. hdl: %llu, scoe_id: %u", > client_info->client_hdl, > cbk_evt->scope_id); > + osafassert(0); > } > > /* If one of the filter matches then go > to the > -- > 2.18.0 > > > > ------------------------------------------------------------------------------ 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