Currently the file descriptors are allocated using a custom allocator. This patchset replaces the custom code with an IDR. This replacement will result in some memory saving for processes with relatively few open files and improve performance of workloads with very large numbers of open files. Note: Some more performance benchmark needs to be run on this patchset. Can anyone please help in runnning benchmark for this patchset. Matthew Wilcox (5): idr: Add ability to set/clear tags idr: Add idr_for_each_entry_tagged() idr, radix-tree: Add get_tag_batch function idr, radix-tree: Implement copy_preload vfs: Add init_task.h include Sandhya Bankar (8): vfs: Replace array of file pointers with an IDR vfs: Remove next_fd from fd alloc code path. vfs: Remove full_fds_bits from fd allocation code path. vfs: Use idr_tag_get() in fd_is_open(). vfs: Rewrite close_files() vfs: Replace close_on_exec bitmap with an IDR tag vfs: Convert select to use idr_get_tag_batch() vfs: Delete struct fdtable fs/compat.c | 6 +- fs/exec.c | 2 +- fs/fcntl.c | 2 +- fs/file.c | 606 ++++++---------------------- fs/proc/array.c | 2 +- fs/proc/fd.c | 6 +- fs/select.c | 21 +- include/linux/fdtable.h | 66 +-- include/linux/file.h | 1 - include/linux/idr.h | 110 ++++- include/linux/radix-tree.h | 5 + lib/idr.c | 30 +- lib/radix-tree.c | 169 +++++++- tools/testing/radix-tree/idr-test.c | 85 +++- tools/testing/radix-tree/linux/radix-tree.h | 2 + tools/testing/radix-tree/main.c | 38 ++ tools/testing/radix-tree/test.c | 9 +- tools/testing/radix-tree/test.h | 3 +- 18 files changed, 578 insertions(+), 585 deletions(-) -- 1.8.3.1