Messages in this thread Patch in this message |  | | | Date | Tue, 21 Feb 2006 22:18:30 +0100 | | From | Thomas Ogrisegg <> | | Subject | Re: [PATCH] procfs fixes for inotify/dnotify |
| |
Sorry, forgot the patch... diff -uNr -X linux-2.6.15/Documentation/dontdiff linux-2.6.15/kernel/fork.c linux-2.6.15.4/kernel/fork.c --- linux-2.6.15/kernel/fork.c 2006-01-03 04:21:10.000000000 +0100 +++ linux-2.6.15.4/kernel/fork.c 2006-02-18 14:09:54.000000000 +0100 @@ -43,6 +43,7 @@ #include <linux/rmap.h> #include <linux/acct.h> #include <linux/cn_proc.h> +#include <linux/proc_fs.h> #include <asm/pgtable.h> #include <asm/pgalloc.h> @@ -1141,6 +1142,7 @@ write_unlock_irq(&tasklist_lock); proc_fork_connector(p); cpuset_fork(p); + proc_root_notify(pid); retval = 0; fork_out: --- linux-2.6.15/include/linux/proc_fs.h 2006-01-03 04:21:10.000000000 +0100 +++ linux-2.6.15.4/include/linux/proc_fs.h 2006-02-18 13:55:52.000000000 +0100 @@ -4,6 +4,8 @@ #include <linux/config.h> #include <linux/slab.h> #include <linux/fs.h> +#include <linux/fsnotify.h> +#include <linux/mount.h> #include <asm/atomic.h> /* @@ -194,6 +196,13 @@ remove_proc_entry(name,proc_net); } +static inline void proc_root_notify (pid_t pid) +{ + char buf[20]; + snprintf (buf, sizeof (buf), "%d", pid); + fsnotify_mkdir (proc_mnt->mnt_root->d_inode, buf); +} + #else #define proc_root_driver NULL @@ -224,6 +233,8 @@ mode_t mode, struct proc_dir_entry *base, get_info_t *get_info) { return NULL; } +static inline void proc_root_notify (pid_t pid) {} + struct tty_driver; static inline void proc_tty_register_driver(struct tty_driver *driver) {}; static inline void proc_tty_unregister_driver(struct tty_driver *driver) {}; diff -uNr -X linux-2.6.15/Documentation/dontdiff linux-2.6.15/fs/proc/base.c linux-2.6.15.4/fs/proc/base.c --- linux-2.6.15/fs/proc/base.c 2006-01-03 04:21:10.000000000 +0100 +++ linux-2.6.15.4/fs/proc/base.c 2006-02-19 10:44:28.000000000 +0100 @@ -1945,6 +1945,7 @@ if(proc_dentry != NULL) { shrink_dcache_parent(proc_dentry); dput(proc_dentry); + fsnotify_nameremove (proc_dentry, 1); } } |  |