• Al Viro's avatar
    [PATCH] sysctl: keep track of tree relationships · ae7edecc
    Al Viro authored
    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: default avatarAl Viro <viro@zeniv.linux.org.uk>
    ae7edecc
sysctl.c 70.7 KB