Ack

Thanks
Lennart

> -----Original Message-----
> From: [email protected] [mailto:[email protected]]
> Sent: den 14 oktober 2015 11:27
> To: Lennart Lund; Minh Chau H
> Cc: [email protected]
> Subject: [PATCH 0 of 2] Review Request for ntfa: fix deadlock situation due to
> saNtfFinalize V2 [#1521].
> 
> Summary: ntfa: fix deadlock situation due to saNtfFinalize V2[#1521]
> Review request for Trac Ticket(s): <<IF ANY LIST THE #>>
> Peer Reviewer(s): <<LIST THE TECH REVIEWER(S) / MAINTAINER(S) HERE>>
> Pull request to: <<LIST THE PERSON WITH PUSH ACCESS HERE>>
> Affected branch(es): <<LIST ALL AFFECTED BRANCH(ES)>>
> Development branch: <<IF ANY GIVE THE REPO URL>>
> 
> --------------------------------
> Impacted area       Impact y/n
> --------------------------------
>  Docs                    n
>  Build system            n
>  RPM/packaging           n
>  Configuration files     n
>  Startup scripts         n
>  SAF services            n
>  OpenSAF services        n
>  Core libraries          n
>  Samples                 n
>  Tests                   n
>  Other                   n
> 
> 
> Comments (indicate scope for each "y" above):
> ---------------------------------------------
> Incorporating some comments given by Lennart.
> In this version2:
> -comment is added in function header of saNtfFinalize().
> -two test cases is added for saNtfFinalize().
> 
> changeset ae56e045cad15d995a4531b120e1564be3142084
> Author:       [email protected]
> Date: Wed, 14 Oct 2015 14:48:22 +0530
> 
>       ntfa: fix deadlock situation due to saNtfFinalize [#1521].
> 
>       Generally any API called after finalize returns with
> BAD_HANDLE. But in a
>       multi-threaded application, deadlock situation may arise
> between
>       saNtfFinalize() with saNtfNotificationUnsubscribe(), or with
>       saNtfStateChangeNotificationAllocate(), or with and
> saNtfPtrValAllocate().
> 
>       After getting successful response from the server,
> saNtfFinalize() takes
>       lock on ntfa_cb.cb_lock and tries to free all the handles and
> resources.
>       Here it gets block in ntfa_hdl_rec_del()
>       ---->ncshm_destroy_hdl() (actually in in
>       ncshm_destroy_hdl()--->hm_block_me())) as client_handle is
> in use by other
>       threads and waits for it to get released. At the same time, one
> of the above
>       three APIS may be waiting for taking the lock on
> ntfa_cb.cb_lock which is
>       not avialable as it is taken by saNtfFinalize().
> 
>       From the solution perspective, the LEAP API where
> santfFinalize() gets
>       blocked wants other threads to complete thier functionality
> and release the
>       handle. In this situation, new API calls will return with
> BAD_HANDLE (LEAP
>       functionality take_handle() fails) and existing API calls which
> has already
>       taken the client_handle will be able to give back client_handle
> (LEAP
>       functionality give_handle()). So if the lock is removed from
> Finalize(),
>       other APIS will be able to complete their call and will return
> handle one by
>       one which eventually will unblock saNtfFinalize().
> 
> changeset 292811a7c5b5d4972618aa3dc1a4388fc3b3bd6a
> Author:       [email protected]
> Date: Wed, 14 Oct 2015 14:48:44 +0530
> 
>       tests/ntf: add test cases for saNtfFinalize [#1521].
> 
>       First test (saNtfFinalize_04) will subscribe with NTF after
> successful
>       initialization. After this it will try to unsubscribe for notification
> in a
>       separate thread while main thread will try to finalize with NTF.
> Here
>       saNtfSubacribe() may get successful or return with
> BAD_HANDLE.
> 
>       Second test (saNtfFinalize_05) will initialize with notification
> service.
>       After successful initialization, it will try to allocate state change
>       notification in a separate thread while main thread will try to
> finalize
>       with NTF. Here saNtfStateChangeNotificationAllocate() may
> get successful or
>       return with BAD_HANDLE
> 
>       In both the test cases saNtfFinalize() will always be sucessful.
> 
> 
> Complete diffstat:
> ------------------
>  osaf/libs/agents/saf/ntfa/ntfa_api.c |    7 +++-
>  tests/ntfsv/tet_saNtfFinalize.c      |  106
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> +++++++++++
>  2 files changed, 111 insertions(+), 2 deletions(-)
> 
> 
> Testing Commands:
> -----------------
> Executed added test cases 2000 times.
> 
> Testing, Expected Results:
> --------------------------
> Not observing any deadlock.
> 
> Conditions of Submission:
> -------------------------
> Ack from any reviewer before RC1 of 4.7.
> 
> Arch      Built     Started    Linux distro
> -------------------------------------------
> mips        n          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.


------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to