From mboxrd@z Thu Jan 1 00:00:00 1970 From: mathieu.desnoyers@polymtl.ca (Mathieu Desnoyers) Date: Wed, 18 Feb 2009 03:28:58 -0500 Subject: [ltt-dev] [PATCH] lttng: remove ltt root directory if it's no needed In-Reply-To: <499BC3E1.8030908@cn.fujitsu.com> References: <499BC3E1.8030908@cn.fujitsu.com> Message-ID: <20090218082858.GB6658@Krystal> * Gui Jianfeng (guijianfeng at cn.fujitsu.com) wrote: > We have to cleanup the lttng's root directory of debugfs if > there is nobody uses it any more. > > This patch is based on 2.6.29-rc3-lttng-0.92. > > Signed-off-by: Gui Jianfeng > --- > include/linux/ltt-core.h | 1 + > ltt/ltt-core.c | 7 +++++++ > ltt/ltt-trace-control.c | 11 +++++++++++ > ltt/ltt-userspace-event.c | 10 ++++++++++ > 4 files changed, 29 insertions(+), 0 deletions(-) > > diff --git a/include/linux/ltt-core.h b/include/linux/ltt-core.h > index bc244c6..e43fc52 100644 > --- a/include/linux/ltt-core.h > +++ b/include/linux/ltt-core.h > @@ -30,6 +30,7 @@ extern struct ltt_traces ltt_traces; > /* > * get dentry of ltt's root dir > */ > +void reset_ltt_root(void); > struct dentry *get_ltt_root(void); > > /* Keep track of trap nesting inside LTT */ > diff --git a/ltt/ltt-core.c b/ltt/ltt-core.c > index 18db91d..26c04b5 100644 > --- a/ltt/ltt-core.c > +++ b/ltt/ltt-core.c > @@ -23,6 +23,13 @@ static DEFINE_MUTEX(ltt_traces_mutex); > > /* dentry of ltt's root dir */ > static struct dentry *ltt_root_dentry; > + > +void reset_ltt_root(void) > +{ > + ltt_root_dentry = NULL; > +} > +EXPORT_SYMBOL_GPL(reset_ltt_root); > + > struct dentry *get_ltt_root(void) > { > if (!ltt_root_dentry) { > diff --git a/ltt/ltt-trace-control.c b/ltt/ltt-trace-control.c > index 16502a2..21416b1 100644 > --- a/ltt/ltt-trace-control.c > +++ b/ltt/ltt-trace-control.c > @@ -740,6 +740,10 @@ err_create_destroy_trace_file: > err_create_setup_trace_file: > debugfs_remove(ltt_control_dir); > err_create_control_dir: > + if (list_empty(<t_root_dentry->d_subdirs)) { > + debugfs_remove(ltt_root_dentry); > + reset_ltt_root(); > + } > err_no_root: > return err; > } > @@ -747,6 +751,9 @@ err_no_root: > static void __exit ltt_trace_control_exit(void) > { > struct dentry *trace_dir; > + struct dentry *ltt_root_dentry; > + > + ltt_root_dentry = get_ltt_root(); > > /* destory all traces */ > list_for_each_entry(trace_dir, <t_control_dir->d_subdirs, > @@ -759,6 +766,10 @@ static void __exit ltt_trace_control_exit(void) > debugfs_remove(ltt_setup_trace_file); > debugfs_remove(ltt_destroy_trace_file); > debugfs_remove_recursive(ltt_control_dir); > + if (list_empty(<t_root_dentry->d_subdirs)) { > + debugfs_remove(ltt_root_dentry); > + reset_ltt_root(); > + } Hi Gui, Don't you have the feeling of doing cut'n'paste here ? ;) Please move the code above in put_ltt_root in ltt-core.c. Mathieu > } > > module_init(ltt_trace_control_init); > diff --git a/ltt/ltt-userspace-event.c b/ltt/ltt-userspace-event.c > index 385bd3b..ef4fbb2 100644 > --- a/ltt/ltt-userspace-event.c > +++ b/ltt/ltt-userspace-event.c > @@ -117,7 +117,17 @@ err_no_root: > > static void __exit ltt_userspace_exit(void) > { > + struct dentry *ltt_root_dentry; > + > + ltt_root_dentry = get_ltt_root(); > + > debugfs_remove(ltt_event_file); > + if (ltt_root_dentry) { > + if (list_empty(<t_root_dentry->d_subdirs)) { > + debugfs_remove(ltt_root_dentry); > + reset_ltt_root(); > + } > + } > } > > module_init(ltt_userspace_init); > -- > 1.5.4.rc3 > > -- Mathieu Desnoyers OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68