mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
[PATCH] proc: Rewrite the proc dentry flush on exit optimization
To keep the dcache from filling up with dead /proc entries we flush them on process exit. However over the years that code has gotten hairy with a dentry_pointer and a lock in task_struct and misdocumented as a correctness feature. I have rewritten this code to look and see if we have a corresponding entry in the dcache and if so flush it on process exit. This removes the extra fields in the task_struct and allows me to trivially handle the case of a /proc/<tgid>/task/<pid> entry as well as the current /proc/<pid> entries. Signed-off-by: Eric W. Biederman <ebiederm@xmission.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
662795deb8
commit
48e6484d49
7 changed files with 65 additions and 101 deletions
|
@ -99,9 +99,8 @@ extern void proc_misc_init(void);
|
|||
|
||||
struct mm_struct;
|
||||
|
||||
void proc_flush_task(struct task_struct *task);
|
||||
struct dentry *proc_pid_lookup(struct inode *dir, struct dentry * dentry, struct nameidata *);
|
||||
struct dentry *proc_pid_unhash(struct task_struct *p);
|
||||
void proc_pid_flush(struct dentry *proc_dentry);
|
||||
int proc_pid_readdir(struct file * filp, void * dirent, filldir_t filldir);
|
||||
unsigned long task_vsize(struct mm_struct *);
|
||||
int task_statm(struct mm_struct *, int *, int *, int *, int *);
|
||||
|
@ -211,8 +210,7 @@ static inline void proc_net_remove(const char *name)
|
|||
#define proc_net_create(name, mode, info) ({ (void)(mode), NULL; })
|
||||
static inline void proc_net_remove(const char *name) {}
|
||||
|
||||
static inline struct dentry *proc_pid_unhash(struct task_struct *p) { return NULL; }
|
||||
static inline void proc_pid_flush(struct dentry *proc_dentry) { }
|
||||
static inline void proc_flush_task(struct task_struct *task) { }
|
||||
|
||||
static inline struct proc_dir_entry *create_proc_entry(const char *name,
|
||||
mode_t mode, struct proc_dir_entry *parent) { return NULL; }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue