Messages in this thread | | | Date | Tue, 30 Jul 2013 10:33:12 +0900 | From | Masami Hiramatsu <> | Subject | Re: [PATCH v2 5/6] tracing: Introduce remove_event_file_dir() |
| |
(2013/07/27 2:25), Oleg Nesterov wrote: > Preparation for the next patch. Extract the common code from > remove_event_from_tracers() and __trace_remove_event_dirs() > into the new helper, remove_event_file_dir(). > > The patch looks more complicated than it actually is, it also > moves remove_subsystem() up to avoid the forward declaration.
Looks good for me.
Reviewed-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Thanks!
> > Signed-off-by: Oleg Nesterov <oleg@redhat.com> > --- > kernel/trace/trace_events.c | 47 +++++++++++++++++++++---------------------- > 1 files changed, 23 insertions(+), 24 deletions(-) > > diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c > index 3de2aca..2a4f68a 100644 > --- a/kernel/trace/trace_events.c > +++ b/kernel/trace/trace_events.c > @@ -409,11 +409,31 @@ static void put_system(struct ftrace_subsystem_dir *dir) > mutex_unlock(&event_mutex); > } > > +static void remove_subsystem(struct ftrace_subsystem_dir *dir) > +{ > + if (!dir) > + return; > + > + if (!--dir->nr_events) { > + debugfs_remove_recursive(dir->entry); > + list_del(&dir->list); > + __put_system_dir(dir); > + } > +} > + > static void *event_file_data(struct file *filp) > { > return ACCESS_ONCE(file_inode(filp)->i_private); > } > > +static void remove_event_file_dir(struct ftrace_event_file *file) > +{ > + list_del(&file->list); > + debugfs_remove_recursive(file->dir); > + remove_subsystem(file->system); > + kmem_cache_free(file_cachep, file); > +} > + > /* > * Open and update trace_array ref count. > * Must have the current trace_array passed to it. > @@ -1545,33 +1565,16 @@ event_create_dir(struct dentry *parent, > return 0; > } > > -static void remove_subsystem(struct ftrace_subsystem_dir *dir) > -{ > - if (!dir) > - return; > - > - if (!--dir->nr_events) { > - debugfs_remove_recursive(dir->entry); > - list_del(&dir->list); > - __put_system_dir(dir); > - } > -} > - > static void remove_event_from_tracers(struct ftrace_event_call *call) > { > struct ftrace_event_file *file; > struct trace_array *tr; > > do_for_each_event_file_safe(tr, file) { > - > if (file->event_call != call) > continue; > > - list_del(&file->list); > - debugfs_remove_recursive(file->dir); > - remove_subsystem(file->system); > - kmem_cache_free(file_cachep, file); > - > + remove_event_file_dir(file); > /* > * The do_for_each_event_file_safe() is > * a double loop. After finding the call for this > @@ -2301,12 +2304,8 @@ __trace_remove_event_dirs(struct trace_array *tr) > { > struct ftrace_event_file *file, *next; > > - list_for_each_entry_safe(file, next, &tr->events, list) { > - list_del(&file->list); > - debugfs_remove_recursive(file->dir); > - remove_subsystem(file->system); > - kmem_cache_free(file_cachep, file); > - } > + list_for_each_entry_safe(file, next, &tr->events, list) > + remove_event_file_dir(file); > } > > static void >
-- Masami HIRAMATSU IT Management Research Dept. Linux Technology Center Hitachi, Ltd., Yokohama Research Laboratory E-mail: masami.hiramatsu.pt@hitachi.com
| |