From: Alexander Shishkin <alexander.shishckin@xxxxxxxxx> [resending to aim at wider audience] When a file descriptor limit is hit, it might be useful to see all the users to be able to identify those that leak descriptors. Signed-off-by: Alexander Shishkin <alexander.shishckin@xxxxxxxxx> --- fs/file_table.c | 27 +++++++++++++++++++++++++++ 1 files changed, 27 insertions(+), 0 deletions(-) diff --git a/fs/file_table.c b/fs/file_table.c index 54018fe..9e53167 100644 --- a/fs/file_table.c +++ b/fs/file_table.c @@ -136,8 +136,35 @@ struct file *get_empty_filp(void) over: /* Ran out of filps - report that */ if (get_nr_files() > old_max) { + struct task_struct *p; + struct files_struct *files; + struct fdtable *fdt; + int i, count = 0; + printk(KERN_INFO "VFS: file-max limit %d reached\n", get_max_files()); + + read_lock(&tasklist_lock); + for_each_process(p) { + files = get_files_struct(p); + if (!files) + continue; + + spin_lock(&files->file_lock); + fdt = files_fdtable(files); + + /* we have to actually *count* the fds */ + for (count = i = 0; i < fdt->max_fds; i++) + count += !!fcheck_files(files, i); + + printk(KERN_INFO "=> %s [%d]: %d\n", p->comm, + p->pid, count); + + spin_unlock(&files->file_lock); + put_files_struct(files); + } + read_unlock(&tasklist_lock); + old_max = get_nr_files(); } goto fail; -- 1.6.1.3 -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html