Commit 0399cb08c54708db231d616f106f64d920e0b723
Committed by
Linus Torvalds
1 parent
153f805781
Exists in
master
and in
4 other branches
[PATCH] inotify: move sysctl
This moves the inotify sysctl knobs to "/proc/sys/fs/inotify" from "/proc/sys/fs". Also some related cleanup. Signed-off-by: Robert Love <rml@novell.com> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Showing 3 changed files with 62 additions and 50 deletions Side-by-side Diff
fs/inotify.c
... | ... | @@ -45,8 +45,8 @@ |
45 | 45 | |
46 | 46 | static struct vfsmount *inotify_mnt; |
47 | 47 | |
48 | -/* These are configurable via /proc/sys/inotify */ | |
49 | -int inotify_max_user_devices; | |
48 | +/* these are configurable via /proc/sys/fs/inotify/ */ | |
49 | +int inotify_max_user_instances; | |
50 | 50 | int inotify_max_user_watches; |
51 | 51 | int inotify_max_queued_events; |
52 | 52 | |
... | ... | @@ -125,6 +125,47 @@ |
125 | 125 | u32 mask; /* event mask for this watch */ |
126 | 126 | }; |
127 | 127 | |
128 | +#ifdef CONFIG_SYSCTL | |
129 | + | |
130 | +#include <linux/sysctl.h> | |
131 | + | |
132 | +static int zero; | |
133 | + | |
134 | +ctl_table inotify_table[] = { | |
135 | + { | |
136 | + .ctl_name = INOTIFY_MAX_USER_INSTANCES, | |
137 | + .procname = "max_user_instances", | |
138 | + .data = &inotify_max_user_instances, | |
139 | + .maxlen = sizeof(int), | |
140 | + .mode = 0644, | |
141 | + .proc_handler = &proc_dointvec_minmax, | |
142 | + .strategy = &sysctl_intvec, | |
143 | + .extra1 = &zero, | |
144 | + }, | |
145 | + { | |
146 | + .ctl_name = INOTIFY_MAX_USER_WATCHES, | |
147 | + .procname = "max_user_watches", | |
148 | + .data = &inotify_max_user_watches, | |
149 | + .maxlen = sizeof(int), | |
150 | + .mode = 0644, | |
151 | + .proc_handler = &proc_dointvec_minmax, | |
152 | + .strategy = &sysctl_intvec, | |
153 | + .extra1 = &zero, | |
154 | + }, | |
155 | + { | |
156 | + .ctl_name = INOTIFY_MAX_QUEUED_EVENTS, | |
157 | + .procname = "max_queued_events", | |
158 | + .data = &inotify_max_queued_events, | |
159 | + .maxlen = sizeof(int), | |
160 | + .mode = 0644, | |
161 | + .proc_handler = &proc_dointvec_minmax, | |
162 | + .strategy = &sysctl_intvec, | |
163 | + .extra1 = &zero | |
164 | + }, | |
165 | + { .ctl_name = 0 } | |
166 | +}; | |
167 | +#endif /* CONFIG_SYSCTL */ | |
168 | + | |
128 | 169 | static inline void get_inotify_dev(struct inotify_device *dev) |
129 | 170 | { |
130 | 171 | atomic_inc(&dev->count); |
... | ... | @@ -842,7 +883,7 @@ |
842 | 883 | |
843 | 884 | user = get_uid(current->user); |
844 | 885 | |
845 | - if (unlikely(atomic_read(&user->inotify_devs) >= inotify_max_user_devices)) { | |
886 | + if (unlikely(atomic_read(&user->inotify_devs) >= inotify_max_user_instances)) { | |
846 | 887 | ret = -EMFILE; |
847 | 888 | goto out_err; |
848 | 889 | } |
... | ... | @@ -979,7 +1020,7 @@ |
979 | 1020 | inotify_mnt = kern_mount(&inotify_fs_type); |
980 | 1021 | |
981 | 1022 | inotify_max_queued_events = 8192; |
982 | - inotify_max_user_devices = 128; | |
1023 | + inotify_max_user_instances = 8; | |
983 | 1024 | inotify_max_user_watches = 8192; |
984 | 1025 | |
985 | 1026 | atomic_set(&inotify_cookie, 0); |
include/linux/sysctl.h
... | ... | @@ -61,8 +61,7 @@ |
61 | 61 | CTL_DEV=7, /* Devices */ |
62 | 62 | CTL_BUS=8, /* Busses */ |
63 | 63 | CTL_ABI=9, /* Binary emulation */ |
64 | - CTL_CPU=10, /* CPU stuff (speed scaling, etc) */ | |
65 | - CTL_INOTIFY=11 /* Inotify */ | |
64 | + CTL_CPU=10 /* CPU stuff (speed scaling, etc) */ | |
66 | 65 | }; |
67 | 66 | |
68 | 67 | /* CTL_BUS names: */ |
69 | 68 | |
... | ... | @@ -71,12 +70,12 @@ |
71 | 70 | CTL_BUS_ISA=1 /* ISA */ |
72 | 71 | }; |
73 | 72 | |
74 | -/* CTL_INOTIFY names: */ | |
73 | +/* /proc/sys/fs/inotify/ */ | |
75 | 74 | enum |
76 | 75 | { |
77 | - INOTIFY_MAX_USER_DEVICES=1, /* max number of inotify device instances per user */ | |
78 | - INOTIFY_MAX_USER_WATCHES=2, /* max number of inotify watches per user */ | |
79 | - INOTIFY_MAX_QUEUED_EVENTS=3 /* Max number of queued events per inotify device instance */ | |
76 | + INOTIFY_MAX_USER_INSTANCES=1, /* max instances per user */ | |
77 | + INOTIFY_MAX_USER_WATCHES=2, /* max watches per user */ | |
78 | + INOTIFY_MAX_QUEUED_EVENTS=3 /* max queued events per instance */ | |
80 | 79 | }; |
81 | 80 | |
82 | 81 | /* CTL_KERN names: */ |
... | ... | @@ -685,6 +684,7 @@ |
685 | 684 | FS_XFS=17, /* struct: control xfs parameters */ |
686 | 685 | FS_AIO_NR=18, /* current system-wide number of aio requests */ |
687 | 686 | FS_AIO_MAX_NR=19, /* system-wide maximum number of aio requests */ |
687 | + FS_INOTIFY=20, /* inotify submenu */ | |
688 | 688 | }; |
689 | 689 | |
690 | 690 | /* /proc/sys/fs/quota/ */ |
kernel/sysctl.c
... | ... | @@ -67,12 +67,6 @@ |
67 | 67 | extern int printk_ratelimit_burst; |
68 | 68 | extern int pid_max_min, pid_max_max; |
69 | 69 | |
70 | -#ifdef CONFIG_INOTIFY | |
71 | -extern int inotify_max_user_devices; | |
72 | -extern int inotify_max_user_watches; | |
73 | -extern int inotify_max_queued_events; | |
74 | -#endif | |
75 | - | |
76 | 70 | #if defined(CONFIG_X86_LOCAL_APIC) && defined(CONFIG_X86) |
77 | 71 | int unknown_nmi_panic; |
78 | 72 | extern int proc_unknown_nmi_panic(ctl_table *, int, struct file *, |
... | ... | @@ -152,6 +146,9 @@ |
152 | 146 | #ifdef CONFIG_UNIX98_PTYS |
153 | 147 | extern ctl_table pty_table[]; |
154 | 148 | #endif |
149 | +#ifdef CONFIG_INOTIFY | |
150 | +extern ctl_table inotify_table[]; | |
151 | +#endif | |
155 | 152 | |
156 | 153 | #ifdef HAVE_ARCH_PICK_MMAP_LAYOUT |
157 | 154 | int sysctl_legacy_va_layout; |
... | ... | @@ -957,6 +954,14 @@ |
957 | 954 | .mode = 0644, |
958 | 955 | .proc_handler = &proc_dointvec, |
959 | 956 | }, |
957 | +#ifdef CONFIG_INOTIFY | |
958 | + { | |
959 | + .ctl_name = FS_INOTIFY, | |
960 | + .procname = "inotify", | |
961 | + .mode = 0555, | |
962 | + .child = inotify_table, | |
963 | + }, | |
964 | +#endif | |
960 | 965 | #endif |
961 | 966 | { |
962 | 967 | .ctl_name = KERN_SETUID_DUMPABLE, |
... | ... | @@ -966,40 +971,6 @@ |
966 | 971 | .mode = 0644, |
967 | 972 | .proc_handler = &proc_dointvec, |
968 | 973 | }, |
969 | -#ifdef CONFIG_INOTIFY | |
970 | - { | |
971 | - .ctl_name = INOTIFY_MAX_USER_DEVICES, | |
972 | - .procname = "max_user_devices", | |
973 | - .data = &inotify_max_user_devices, | |
974 | - .maxlen = sizeof(int), | |
975 | - .mode = 0644, | |
976 | - .proc_handler = &proc_dointvec_minmax, | |
977 | - .strategy = &sysctl_intvec, | |
978 | - .extra1 = &zero, | |
979 | - }, | |
980 | - | |
981 | - { | |
982 | - .ctl_name = INOTIFY_MAX_USER_WATCHES, | |
983 | - .procname = "max_user_watches", | |
984 | - .data = &inotify_max_user_watches, | |
985 | - .maxlen = sizeof(int), | |
986 | - .mode = 0644, | |
987 | - .proc_handler = &proc_dointvec_minmax, | |
988 | - .strategy = &sysctl_intvec, | |
989 | - .extra1 = &zero, | |
990 | - }, | |
991 | - | |
992 | - { | |
993 | - .ctl_name = INOTIFY_MAX_QUEUED_EVENTS, | |
994 | - .procname = "max_queued_events", | |
995 | - .data = &inotify_max_queued_events, | |
996 | - .maxlen = sizeof(int), | |
997 | - .mode = 0644, | |
998 | - .proc_handler = &proc_dointvec_minmax, | |
999 | - .strategy = &sysctl_intvec, | |
1000 | - .extra1 = &zero | |
1001 | - }, | |
1002 | -#endif | |
1003 | 974 | { .ctl_name = 0 } |
1004 | 975 | }; |
1005 | 976 |