Commit 0399cb08c54708db231d616f106f64d920e0b723

Authored by Robert Love
Committed by Linus Torvalds
1 parent 153f805781

[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

... ... @@ -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/ */
... ... @@ -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