[v4,0/4] cleaning up the sysctls table (hung_task watchdog)
mbox series

Message ID 1589859071-25898-1-git-send-email-nixiaoming@huawei.com
Headers show
Series
  • cleaning up the sysctls table (hung_task watchdog)
Related show

Message

Xiaoming Ni May 19, 2020, 3:31 a.m. UTC
Kernel/sysctl.c contains more than 190 interface files, and there are a 
large number of config macro controls. When modifying the sysctl 
interface directly in kernel/sysctl.c, conflicts are very easy to occur.
E.g: https://lore.kernel.org/lkml/99095805-8cbe-d140-e2f1-0c5a3e84d7e7@huawei.com/

Use register_sysctl() to register the sysctl interface to avoid
merge conflicts when different features modify sysctl.c at the same time.

So consider cleaning up the sysctls table, details are in:
   https://kernelnewbies.org/KernelProjects/proc
   https://lore.kernel.org/lkml/20200513141421.GP11244@42.do-not-panic.com/#t

The current patch set extracts register_sysctl_init and some sysctl_vals
variables, and clears the interface of hung_task and watchdog in sysctl.c.

The current patch set is based on linux-next, commit 72bc15d0018ebfbc9
("Add linux-next specific files for 20200518").

changes in v4:
  Handle the conflict with the commit d4ee116819ed714f ("kernel/hung_task.c:
  introduce sysctl to print all traces when a hung task is detected"),
  move the sysctl interface hung_task_all_cpu_backtrace to hung_task.c.

V3: https://lore.kernel.org/lkml/1589774397-42485-1-git-send-email-nixiaoming@huawei.com/
  base on commit b9bbe6ed63b2b9 ("Linux 5.7-rc6")
changes in v3:
  1. make hung_task_timeout_max to be const
  2. fix build warning:
     kernel/watchdog.c:779:14: warning: initialization discards 'const'
         qualifier from pointer target type [-Wdiscarded-qualifiers]
         .extra2  = &sixty,
                    ^

V2: https://lore.kernel.org/lkml/1589619315-65827-1-git-send-email-nixiaoming@huawei.com/
changes in v2:
  1. Adjusted the order of patches, first do public function
     extraction, then do feature code movement
  2. Move hung_task sysctl to hung_task.c instead of adding new file
  3. Extract multiple common variables instead of only neg_one, and keep
     the order of member values in sysctl_vals
  4. Add const modification to the variable sixty in watchdog sysctl

V1: https://lore.kernel.org/lkml/1589517224-123928-1-git-send-email-nixiaoming@huawei.com/

Xiaoming Ni (4):
  sysctl: Add register_sysctl_init() interface
  sysctl: Move some boundary constants form sysctl.c to sysctl_vals
  hung_task: Move hung_task sysctl interface to hung_task.c
  watchdog: move watchdog sysctl interface to watchdog.c

 fs/proc/proc_sysctl.c        |   2 +-
 include/linux/sched/sysctl.h |  14 +--
 include/linux/sysctl.h       |  13 ++-
 kernel/hung_task.c           |  77 +++++++++++++++-
 kernel/sysctl.c              | 214 +++++++------------------------------------
 kernel/watchdog.c            | 101 ++++++++++++++++++++
 6 files changed, 224 insertions(+), 197 deletions(-)

Comments

Andrew Morton May 20, 2020, 3:31 a.m. UTC | #1
On Tue, 19 May 2020 11:31:07 +0800 Xiaoming Ni <nixiaoming@huawei.com> wrote:

> Kernel/sysctl.c

eek!

> 
>  fs/proc/proc_sysctl.c        |   2 +-
>  include/linux/sched/sysctl.h |  14 +--
>  include/linux/sysctl.h       |  13 ++-
>  kernel/hung_task.c           |  77 +++++++++++++++-
>  kernel/sysctl.c              | 214 +++++++------------------------------------
>  kernel/watchdog.c            | 101 ++++++++++++++++++++
>  6 files changed, 224 insertions(+), 197 deletions(-)

Here's what we presently have happening in linux-next's kernel/sysctl.c:

 sysctl.c | 3109 ++++++++++++++++++++++++++++++---------------------------------
 1 file changed, 1521 insertions(+), 1588 deletions(-)


So this is not a good time for your patch!

Can I suggest that you set the idea aside and take a look after 5.8-rc1
is released?
Xiaoming Ni May 20, 2020, 4:02 a.m. UTC | #2
On 2020/5/20 11:31, Andrew Morton wrote:
> On Tue, 19 May 2020 11:31:07 +0800 Xiaoming Ni <nixiaoming@huawei.com> wrote:
> 
>> Kernel/sysctl.c
> 
> eek!
> 
>>
>>   fs/proc/proc_sysctl.c        |   2 +-
>>   include/linux/sched/sysctl.h |  14 +--
>>   include/linux/sysctl.h       |  13 ++-
>>   kernel/hung_task.c           |  77 +++++++++++++++-
>>   kernel/sysctl.c              | 214 +++++++------------------------------------
>>   kernel/watchdog.c            | 101 ++++++++++++++++++++
>>   6 files changed, 224 insertions(+), 197 deletions(-)
> 
> Here's what we presently have happening in linux-next's kernel/sysctl.c:
> 
>   sysctl.c | 3109 ++++++++++++++++++++++++++++++---------------------------------
>   1 file changed, 1521 insertions(+), 1588 deletions(-)
> 
> 
> So this is not a good time for your patch!
> 
> Can I suggest that you set the idea aside and take a look after 5.8-rc1
> is released?
> 

ok, I will make v5 patch based on 5.8-rc1 after 5.8-rc1 is released,
And add more sysctl table cleanup.

Thanks
Xiaoming Ni
Luis Chamberlain May 20, 2020, 1:08 p.m. UTC | #3
On Wed, May 20, 2020 at 12:02:26PM +0800, Xiaoming Ni wrote:
> On 2020/5/20 11:31, Andrew Morton wrote:
> > On Tue, 19 May 2020 11:31:07 +0800 Xiaoming Ni <nixiaoming@huawei.com> wrote:
> > 
> > > Kernel/sysctl.c
> > 
> > eek!
> > 
> > > 
> > >   fs/proc/proc_sysctl.c        |   2 +-
> > >   include/linux/sched/sysctl.h |  14 +--
> > >   include/linux/sysctl.h       |  13 ++-
> > >   kernel/hung_task.c           |  77 +++++++++++++++-
> > >   kernel/sysctl.c              | 214 +++++++------------------------------------
> > >   kernel/watchdog.c            | 101 ++++++++++++++++++++
> > >   6 files changed, 224 insertions(+), 197 deletions(-)
> > 
> > Here's what we presently have happening in linux-next's kernel/sysctl.c:
> > 
> >   sysctl.c | 3109 ++++++++++++++++++++++++++++++---------------------------------
> >   1 file changed, 1521 insertions(+), 1588 deletions(-)
> > 
> > 
> > So this is not a good time for your patch!
> > 
> > Can I suggest that you set the idea aside and take a look after 5.8-rc1
> > is released?
> > 
> 
> ok, I will make v5 patch based on 5.8-rc1 after 5.8-rc1 is released,
> And add more sysctl table cleanup.

Xiaoming, I'll coordinate with you on this offline as I have the fs
kernel/sysctl.c stuff out of the way as well.

  Luis