[lkml]   [2012]   [Jan]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Subject[Review][PATCH][0/29] sysctl rewrite for speed and clarity

The problem:

The current implementation of sysctl has data structures and semantics
that are hard to understand, and causes sysctl to run slowly.
Sysctl running slowly is a scaling problem in general and the network
stack in particular.

After some heavy testing and way way too much patch rewriting I believe I
have a patchset that seems sane and reasonable and gets to what looks to
my weary eyes a sane result.

My patchset was heavily inspired by the previous work done by Lucian
Grinjincu. Lucian kept the need for this work alive, and did a much
better job than I ever though he did. Unfortunately I missed a lot
of the good things Lucian did my rushed attempts at code review.

This code is also available at:

Eric W. Biederman (28):
sysctl: Consolidate !CONFIG_SYSCTL handling
sysctl: Register the base sysctl table like any other sysctl table.
sysctl: Move the implementation into fs/proc/proc_sysctl.c
sysctl: Make the directories have nlink == 1
sysctl: Implement retire_sysctl_set
sysctl: Remove the unnecessary sysctl_set parent concept.
sysctl: Create local copies of directory names used in paths
sysctl: Add support for register sysctl tables with a normal cstring path.
sysctl: Add ctl_table chains into cstring paths
sysctl: register only tables of sysctl files
sysctl: Improve the sysctl sanity checks
sysctl: Remove the now unused ctl_table parent field.
sysctl: A more obvious version of grab_header.
sysctl: Initial support for auto-unregistering sysctl tables.
sysctl: Factor out init_header from __register_sysctl_paths
sysctl: Factor out insert_header and erase_header
sysctl: Normalize the root_table data structure.
sysctl: Rewrite proc_sys_lookup introducing find_entry and lookup_entry.
sysctl: Rewrite proc_sys_readdir in terms of first_entry and next_entry
sysctl: Add a root pointer to ctl_table_set
sysctl: Stop requiring explicit management of sysctl directories
sysctl: Add sysctl_print_dir and use it in get_subdir
sysctl: Replace root_list with links between sysctl_table_sets.
sysctl: Modify __register_sysctl_paths to take a set instead of a root and an nsproxy
sysctl: Move sysctl_check_dups into insert_header
sysctl: Make the header lists per directory.
sysctl: Index sysctl directories with rbtrees.
sysctl: Add register_sysctl for normal sysctl users

Lucas De Marchi (1):
sysctl: remove impossible condition check

fs/proc/internal.h | 3 +
fs/proc/proc_sysctl.c | 1240 +++++++++++++++++++++++++++++++++++++++++++++---
include/linux/sysctl.h | 106 +++--
kernel/Makefile | 1 -
kernel/sysctl.c | 501 +-------------------
kernel/sysctl_check.c | 160 -------
lib/Kconfig.debug | 8 -
net/sysctl_net.c | 24 +-
8 files changed, 1247 insertions(+), 796 deletions(-)


 \ /
  Last update: 2012-01-27 05:45    [W:0.309 / U:39.200 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site