[PATCH] sysctl: keep track of tree relationships
authorAl Viro <viro@zeniv.linux.org.uk>
Tue, 15 Jul 2008 10:33:31 +0000 (06:33 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Sun, 27 Jul 2008 00:53:11 +0000 (20:53 -0400)
commitae7edecc9b8810770a8e5cb9a466ea4bdcfa8401
tree8c0a244f4aea3eca5d8edf45665266b007eb046e
parentbd7b1533cd6a68c734062aa69394bec7e2b1718e
[PATCH] sysctl: keep track of tree relationships

In a sense, that's the heart of the series.  It's based on the following
property of the trees we are actually asked to add: they can be split into
stem that is already covered by registered trees and crown that is entirely
new.  IOW, if a/b and a/c/d are introduced by our tree, then a/c is also
introduced by it.

That allows to associate tree and table entry with each node in the union;
while directory nodes might be covered by many trees, only one will cover
the node by its crown.  And that will allow much saner logics for /proc/sys
in the next patches.  This patch introduces the data structures needed to
keep track of that.

When adding a sysctl table, we find a "parent" one.  Which is to say,
find the deepest node on its stem that already is present in one of the
tables from our table set or its ancestor sets.  That table will be our
parent and that node in it - attachment point.  Add our table to list
anchored in parent, have it refer the parent and contents of attachment
point.  Also remember where its crown lives.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
include/linux/sysctl.h
kernel/sysctl.c