X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=doc%2Frelayd-architecture.txt;h=56c81241fa6b363e18361780b367ba3056ea8320;hp=1491da90fb3f3b213a158211c48b2b869d7079fd;hb=763f0d4cef1438d3f1f5f5c5a232d72628bca550;hpb=7591bab11eceedc6a0d1e02fd6f85592267a63b5 diff --git a/doc/relayd-architecture.txt b/doc/relayd-architecture.txt index 1491da90f..56c81241f 100644 --- a/doc/relayd-architecture.txt +++ b/doc/relayd-architecture.txt @@ -44,10 +44,7 @@ A RCU lookup+refcounting scheme has been introduced for all objects scheme allows looking up the objects or doing a traversal on the RCU linked list or hash table in combination with a getter on the object. This getter validates that there is still at least one reference to the -object, else the lookup acts just as if the object does not exist. This -scheme is protected by a "reflock" mutex in each object. "reflock" -mutexes can be nested from the innermost object to the outermost object. -IOW, the session reflock can nest within the ctf-trace reflock. +object, else the lookup acts just as if the object does not exist. The relay_connection (connection between the sessiond/consumer and the relayd) is the outermost object of its hierarchy. @@ -61,8 +58,6 @@ live.c client thread) when objects are shared. Locks can be nested from the outermost object to the innermost object. IOW, the ctf-trace lock can nest within the session lock. -A "lock" should never nest within a "reflock". - RCU linked lists are used to iterate using RCU, and are protected by their own mutex for modifications. Iterations should be confirmed using the object "getter" to ensure its refcount is not 0 (except in cases