On Tue 23-11-21 12:23:47, Luis Chamberlain wrote: > From: Xiaoming Ni <nixiaoming@xxxxxxxxxx> > > 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. > > So move dnotify sysctls to dnotify.c and use the new > register_sysctl_init() to register the sysctl interface. > > Signed-off-by: Xiaoming Ni <nixiaoming@xxxxxxxxxx> > [mcgrof: adjust the commit log to justify the move] > Signed-off-by: Luis Chamberlain <mcgrof@xxxxxxxxxx> Looks sane. Feel free to add: Acked-by: Jan Kara <jack@xxxxxxx> Honza > --- > fs/notify/dnotify/dnotify.c | 21 ++++++++++++++++++++- > include/linux/dnotify.h | 1 - > kernel/sysctl.c | 10 ---------- > 3 files changed, 20 insertions(+), 12 deletions(-) > > diff --git a/fs/notify/dnotify/dnotify.c b/fs/notify/dnotify/dnotify.c > index e85e13c50d6d..2b04e2296fb6 100644 > --- a/fs/notify/dnotify/dnotify.c > +++ b/fs/notify/dnotify/dnotify.c > @@ -19,7 +19,25 @@ > #include <linux/fdtable.h> > #include <linux/fsnotify_backend.h> > > -int dir_notify_enable __read_mostly = 1; > +static int dir_notify_enable __read_mostly = 1; > +#ifdef CONFIG_SYSCTL > +static struct ctl_table dnotify_sysctls[] = { > + { > + .procname = "dir-notify-enable", > + .data = &dir_notify_enable, > + .maxlen = sizeof(int), > + .mode = 0644, > + .proc_handler = proc_dointvec, > + }, > + {} > +}; > +static void __init dnotify_sysctl_init(void) > +{ > + register_sysctl_init("fs", dnotify_sysctls); > +} > +#else > +#define dnotify_sysctl_init() do { } while (0) > +#endif > > static struct kmem_cache *dnotify_struct_cache __read_mostly; > static struct kmem_cache *dnotify_mark_cache __read_mostly; > @@ -386,6 +404,7 @@ static int __init dnotify_init(void) > dnotify_group = fsnotify_alloc_group(&dnotify_fsnotify_ops); > if (IS_ERR(dnotify_group)) > panic("unable to allocate fsnotify group for dnotify\n"); > + dnotify_sysctl_init(); > return 0; > } > > diff --git a/include/linux/dnotify.h b/include/linux/dnotify.h > index 0aad774beaec..4f3b25d47436 100644 > --- a/include/linux/dnotify.h > +++ b/include/linux/dnotify.h > @@ -29,7 +29,6 @@ struct dnotify_struct { > FS_CREATE | FS_DN_RENAME |\ > FS_MOVED_FROM | FS_MOVED_TO) > > -extern int dir_notify_enable; > extern void dnotify_flush(struct file *, fl_owner_t); > extern int fcntl_dirnotify(int, struct file *, unsigned long); > > diff --git a/kernel/sysctl.c b/kernel/sysctl.c > index 20326d67b814..7a90a12b9ea4 100644 > --- a/kernel/sysctl.c > +++ b/kernel/sysctl.c > @@ -48,7 +48,6 @@ > #include <linux/times.h> > #include <linux/limits.h> > #include <linux/dcache.h> > -#include <linux/dnotify.h> > #include <linux/syscalls.h> > #include <linux/vmstat.h> > #include <linux/nfs_fs.h> > @@ -3090,15 +3089,6 @@ static struct ctl_table fs_table[] = { > .proc_handler = proc_dointvec, > }, > #endif > -#ifdef CONFIG_DNOTIFY > - { > - .procname = "dir-notify-enable", > - .data = &dir_notify_enable, > - .maxlen = sizeof(int), > - .mode = 0644, > - .proc_handler = proc_dointvec, > - }, > -#endif > #ifdef CONFIG_MMU > #ifdef CONFIG_FILE_LOCKING > { > -- > 2.33.0 > -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR