All of lore.kernel.org
 help / color / mirror / Atom feed
From: Divya Indi <divya.indi@oracle.com>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: linux-kernel@vger.kernel.org, Joe Jin <joe.jin@oracle.com>,
	Srinivas Eeda <srinivas.eeda@oracle.com>,
	Aruna Ramakrishna <aruna.ramakrishna@oracle.com>
Subject: Re: [PATCH 4/5] tracing: Handle the trace array ref counter in new functions
Date: Thu, 24 Oct 2019 14:31:51 -0700	[thread overview]
Message-ID: <74a1af20-5f99-bb64-1e0f-c8405bd68014@oracle.com> (raw)
In-Reply-To: <20191024090037.78fe9f30@gandalf.local.home>

Hi Steven,

On 10/24/19 6:00 AM, Steven Rostedt wrote:
> On Wed, 23 Oct 2019 15:57:49 -0700
> Divya Indi <divya.indi@oracle.com> wrote:
>
>> Hi Steven,                                                                         
>>                                                                                  
>> A few clarifications on this discussion on reference counter -                   
>>                                                                                  
>> 1) We will still need to export trace_array_put() to be used for every           
>> trace_array_get_by_name() OR trace_array_create() + trace_array_get().        
> I'm fine with exporting trace_array_put, and even trace_array_get.
>       
>>                                                                                  
>> How else will we reduce the reference counter [For eg: When multiple modules     
>> lookup the same trace array (say, reference counter = 4)]?                       
>>                                                                                  
>> 2) tr = trace_array_create("my_tr");                                             
>>    trace_array_get(tr);                                                          
>>                                                                                  
>> Both of these functions will iterate through the list of trace arrays to verify  
>> whether the trace array exists (redundant, but more intuitive? Does this seem    
>> acceptable?)                                                                     
>>                                                                                  
>> To avoid iterating twice, we went with increasing ref_ctr in trace_array_create. 
>> This necessitated a trace_array_put() in instance_mkdir (Or as suggested below,
>> we can do this trace_array_put() in instance_rmdir().)                        
>>                                                                                                                
>>                                                                                  
>> 3) A summary of suggested changes (Let me know if this looks good) -                                              
>>                                                                                  
>> tr = trace_array_get_by_name("foo-bar"); // ref_ctr++.                           
>>                                                                                  
>> if (!tr)                                                                         
>> {                                                                                
>>         // instance_mkdir also causes ref_ctr = 1                                
> You'll need locking for anyone who does this, and check the return
> status below for "foo-bar" existing already (due to another thread
> jumping in here).

Right, Noted! Thanks for the pointer. 

>
> -- Steve
>
>>         tr = trace_array_create("foo-bar"); // ref_ctr = 1                       
>>         trace_array_get(tr); // ref_ctr++                                        
>> }                                                                                
>>                                                                                  
>> trace_array_printk(.....);                                                       
>> trace_array_set_clr_event(......);                                               
>> ...                                                                              
>> ...                                                                              
>> ...                                                                              
>> // Done using the trace array.                                                   
>> trace_array_put(tr); // ref_ctr--                                                
>> ...                                                                              
>> ...                                                                              
>> ...                                                                              
>> // We can now remove the trace array via trace_array_destroy or instance_rmdir()
>> trace_array_destroy(tr); // ref_ctr > 1 returns -EBUSY.

  reply	other threads:[~2019-10-24 21:32 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-14 17:55 [PATCH 0/5 v4]Kernel Access to Ftrace instances Divya Indi
2019-08-14 17:55 ` [PATCH 1/5] tracing: Declare newly exported APIs in include/linux/trace.h Divya Indi
2019-08-14 17:55 ` [PATCH 2/5] tracing: Verify if trace array exists before destroying it Divya Indi
2019-08-14 18:42   ` Aruna Ramakrishna
2019-08-14 17:55 ` [PATCH 3/5] tracing: Adding NULL checks Divya Indi
2019-08-14 17:55 ` [PATCH 4/5] tracing: Handle the trace array ref counter in new functions Divya Indi
2019-10-15 23:04   ` Steven Rostedt
2019-10-16 23:42     ` Divya Indi
2019-10-23  2:52       ` Steven Rostedt
2019-10-23 22:57         ` Divya Indi
2019-10-24 13:00           ` Steven Rostedt
2019-10-24 21:31             ` Divya Indi [this message]
2019-08-14 17:55 ` [PATCH 5/5] tracing: New functions for kernel access to Ftrace instances Divya Indi
2019-10-15 23:19   ` Steven Rostedt
2019-10-16 23:53     ` Divya Indi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=74a1af20-5f99-bb64-1e0f-c8405bd68014@oracle.com \
    --to=divya.indi@oracle.com \
    --cc=aruna.ramakrishna@oracle.com \
    --cc=joe.jin@oracle.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rostedt@goodmis.org \
    --cc=srinivas.eeda@oracle.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.