lkml.org 
[lkml]   [2022]   [Feb]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH] ftrace: move sysctl_ftrace_enabled to ftrace.c
On Tue, 22 Feb 2022 17:52:59 -0800
Luis Chamberlain <mcgrof@kernel.org> wrote:

> On Wed, Feb 23, 2022 at 09:23:11AM +0800, Wei Xiao wrote:
> > This moves ftrace_enabled to trace/ftrace.c.
>
> Hey Wei, thanks for you patch!
>
> This does not explain how this is being to help with maitenance as
> otherwise this makes kernel/sysctl.c hard to maintain and we also tend
> to get many conflicts. It also does not explain how all the filesystem
> sysctls are not gone and that this is just the next step, moving slowly
> the rest of the sysctls. Explaining this in the commit log will help
> patch review and subsystem maintainers understand the conext / logic
> behind the move.
>
> I'd be more than happy to take this if ftrace folks Ack. To avoid conflicts
> I can route this through sysctl-next which is put forward in particular
> to avoid conflicts across trees for this effort. Let me know.

I'm fine with this change going through another tree.

Acked-by: Steven Rostedt (Google) <rostedt@goodmis.org>

for your convenience.

>
> > diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
> > index f9feb197b2da..4a5b4d6996a4 100644
> > --- a/kernel/trace/ftrace.c
> > +++ b/kernel/trace/ftrace.c
> > @@ -7846,7 +7846,8 @@ static bool is_permanent_ops_registered(void)
> > return false;
> > }
> >
> > -int
> > +#ifdef CONFIG_SYSCTL
> > +static int
>
> Is the ifdef really needed? It was not there before, ie, does
> ftrace not depend on sysctls? I don't see a direct relationship
> but I do wonder if its implicit.

I think because the function is now static, and that it now includes the
structure itself, that the #ifdef is added. When I first saw it, I was
a bit uncomfortable with adding more #ifdefs, but for this use case, I
believe it's OK.

>
> > ftrace_enable_sysctl(struct ctl_table *table, int write,
> > void *buffer, size_t *lenp, loff_t *ppos)
> > {
> > @@ -7889,3 +7890,22 @@ ftrace_enable_sysctl(struct ctl_table *table, int write,
> > mutex_unlock(&ftrace_lock);
> > return ret;
> > }
> > +
> > +static struct ctl_table ftrace_sysctls[] = {
> > + {
> > + .procname = "ftrace_enabled",
> > + .data = &ftrace_enabled,
> > + .maxlen = sizeof(int),
> > + .mode = 0644,
> > + .proc_handler = ftrace_enable_sysctl,
> > + },
> > + {}
> > +};
> > +
> > +static int __init ftrace_sysctl_init(void)
> > +{
> > + register_sysctl_init("kernel", ftrace_sysctls);
> > + return 0;
> > +}
> > +late_initcall(ftrace_sysctl_init);
> > +#endif
>
> There's other __init calls already on ftrace, would this be better
> placed in one of them, and then have this be a no-op iff we determine
> ftrace can be built without sysctls and then have a no-op for when
> sysctls are disabled.

I rather have the initcall here, as the other initcalls are special
needs, and not generic functions.

-- Steve

\
 
 \ /
  Last update: 2022-02-23 03:14    [W:0.029 / U:1.468 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site