| From: Xiaoming Ni <nixiaoming@huawei.com> |
| Subject: aio: move aio sysctl to aio.c |
| |
| The kernel/sysctl.c is a kitchen sink where everyone leaves their dirty |
| dishes, this makes it very difficult to maintain. |
| |
| To help with this maintenance let's start by moving sysctls to places |
| where they actually belong. The proc sysctl maintainers do not want to |
| know what sysctl knobs you wish to add for your own piece of code, we just |
| care about the core logic. |
| |
| Move aio sysctl to aio.c and use the new register_sysctl_init() to |
| register the sysctl interface for aio. |
| |
| [mcgrof@kernel.org: adjust commit log to justify the move] |
| Link: https://lkml.kernel.org/r/20211123202347.818157-9-mcgrof@kernel.org |
| Signed-off-by: Xiaoming Ni <nixiaoming@huawei.com> |
| Signed-off-by: Luis Chamberlain <mcgrof@kernel.org> |
| Reviewed-by: Jan Kara <jack@suse.cz> |
| Cc: Al Viro <viro@zeniv.linux.org.uk> |
| Cc: Amir Goldstein <amir73il@gmail.com> |
| Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com> |
| Cc: Benjamin LaHaise <bcrl@kvack.org> |
| Cc: "Eric W. Biederman" <ebiederm@xmission.com> |
| Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| Cc: Iurii Zaikin <yzaikin@google.com> |
| Cc: Kees Cook <keescook@chromium.org> |
| Cc: Paul Turner <pjt@google.com> |
| Cc: Peter Zijlstra <peterz@infradead.org> |
| Cc: Petr Mladek <pmladek@suse.com> |
| Cc: Qing Wang <wangqing@vivo.com> |
| Cc: Sebastian Reichel <sre@kernel.org> |
| Cc: Sergey Senozhatsky <senozhatsky@chromium.org> |
| Cc: Stephen Kitt <steve@sk2.org> |
| Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> |
| Cc: Antti Palosaari <crope@iki.fi> |
| Cc: Arnd Bergmann <arnd@arndb.de> |
| Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> |
| Cc: Clemens Ladisch <clemens@ladisch.de> |
| Cc: David Airlie <airlied@linux.ie> |
| Cc: Jani Nikula <jani.nikula@linux.intel.com> |
| Cc: Joel Becker <jlbec@evilplan.org> |
| Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> |
| Cc: Joseph Qi <joseph.qi@linux.alibaba.com> |
| Cc: Julia Lawall <julia.lawall@inria.fr> |
| Cc: Lukas Middendorf <kernel@tuxforce.de> |
| Cc: Mark Fasheh <mark@fasheh.com> |
| Cc: Phillip Potter <phil@philpotter.co.uk> |
| Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> |
| Cc: Douglas Gilbert <dgilbert@interlog.com> |
| Cc: James E.J. Bottomley <jejb@linux.ibm.com> |
| Cc: Jani Nikula <jani.nikula@intel.com> |
| Cc: John Ogness <john.ogness@linutronix.de> |
| Cc: Martin K. Petersen <martin.petersen@oracle.com> |
| Cc: "Rafael J. Wysocki" <rafael@kernel.org> |
| Cc: Steven Rostedt (VMware) <rostedt@goodmis.org> |
| Cc: Suren Baghdasaryan <surenb@google.com> |
| Cc: "Theodore Ts'o" <tytso@mit.edu> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| fs/aio.c | 31 +++++++++++++++++++++++++++++-- |
| include/linux/aio.h | 4 ---- |
| kernel/sysctl.c | 17 ----------------- |
| 3 files changed, 29 insertions(+), 23 deletions(-) |
| |
| --- a/fs/aio.c~aio-move-aio-sysctl-to-aioc |
| +++ a/fs/aio.c |
| @@ -220,9 +220,35 @@ struct aio_kiocb { |
| |
| /*------ sysctl variables----*/ |
| static DEFINE_SPINLOCK(aio_nr_lock); |
| -unsigned long aio_nr; /* current system wide number of aio requests */ |
| -unsigned long aio_max_nr = 0x10000; /* system wide maximum number of aio requests */ |
| +static unsigned long aio_nr; /* current system wide number of aio requests */ |
| +static unsigned long aio_max_nr = 0x10000; /* system wide maximum number of aio requests */ |
| /*----end sysctl variables---*/ |
| +#ifdef CONFIG_SYSCTL |
| +static struct ctl_table aio_sysctls[] = { |
| + { |
| + .procname = "aio-nr", |
| + .data = &aio_nr, |
| + .maxlen = sizeof(aio_nr), |
| + .mode = 0444, |
| + .proc_handler = proc_doulongvec_minmax, |
| + }, |
| + { |
| + .procname = "aio-max-nr", |
| + .data = &aio_max_nr, |
| + .maxlen = sizeof(aio_max_nr), |
| + .mode = 0644, |
| + .proc_handler = proc_doulongvec_minmax, |
| + }, |
| + {} |
| +}; |
| + |
| +static void __init aio_sysctl_init(void) |
| +{ |
| + register_sysctl_init("fs", aio_sysctls); |
| +} |
| +#else |
| +#define aio_sysctl_init() do { } while (0) |
| +#endif |
| |
| static struct kmem_cache *kiocb_cachep; |
| static struct kmem_cache *kioctx_cachep; |
| @@ -275,6 +301,7 @@ static int __init aio_setup(void) |
| |
| kiocb_cachep = KMEM_CACHE(aio_kiocb, SLAB_HWCACHE_ALIGN|SLAB_PANIC); |
| kioctx_cachep = KMEM_CACHE(kioctx,SLAB_HWCACHE_ALIGN|SLAB_PANIC); |
| + aio_sysctl_init(); |
| return 0; |
| } |
| __initcall(aio_setup); |
| --- a/include/linux/aio.h~aio-move-aio-sysctl-to-aioc |
| +++ a/include/linux/aio.h |
| @@ -20,8 +20,4 @@ static inline void kiocb_set_cancel_fn(s |
| kiocb_cancel_fn *cancel) { } |
| #endif /* CONFIG_AIO */ |
| |
| -/* for sysctl: */ |
| -extern unsigned long aio_nr; |
| -extern unsigned long aio_max_nr; |
| - |
| #endif /* __LINUX__AIO_H */ |
| --- a/kernel/sysctl.c~aio-move-aio-sysctl-to-aioc |
| +++ a/kernel/sysctl.c |
| @@ -20,7 +20,6 @@ |
| */ |
| |
| #include <linux/module.h> |
| -#include <linux/aio.h> |
| #include <linux/mm.h> |
| #include <linux/swap.h> |
| #include <linux/slab.h> |
| @@ -3111,22 +3110,6 @@ static struct ctl_table fs_table[] = { |
| .proc_handler = proc_dointvec, |
| }, |
| #endif |
| -#ifdef CONFIG_AIO |
| - { |
| - .procname = "aio-nr", |
| - .data = &aio_nr, |
| - .maxlen = sizeof(aio_nr), |
| - .mode = 0444, |
| - .proc_handler = proc_doulongvec_minmax, |
| - }, |
| - { |
| - .procname = "aio-max-nr", |
| - .data = &aio_max_nr, |
| - .maxlen = sizeof(aio_max_nr), |
| - .mode = 0644, |
| - .proc_handler = proc_doulongvec_minmax, |
| - }, |
| -#endif /* CONFIG_AIO */ |
| #ifdef CONFIG_INOTIFY_USER |
| { |
| .procname = "inotify", |
| _ |