• Eric W. Biederman's avatar
    sysctl: Stop requiring explicit management of sysctl directories · 7ec66d06
    Eric W. Biederman authored
    Simplify the code and the sysctl semantics by autogenerating
    sysctl directories when a sysctl table is registered that needs
    the directories and autodeleting the directories when there are
    no more sysctl tables registered that need them.
    
    Autogenerating directories keeps sysctl tables from depending
    on each other, removing all of the arcane register/unregister
    ordering constraints and makes it impossible to get the order
    wrong when reigsering and unregistering sysctl tables.
    
    Autogenerating directories yields one unique entity that dentries
    can point to, retaining the current effective use of the dcache.
    
    Add struct ctl_dir as the type of these new autogenerated
    directories.
    
    The attached_by and attached_to fields in ctl_table_header are
    removed as they are no longer needed.
    
    The child field in ctl_table is no longer needed by the core of
    the sysctl code.  ctl_table.child can be removed once all of the
    existing users have been updated.
    
    Benchmark before:
        make-dummies 0 999 -> 0.7s
        rmmod dummy        -> 0.07s
        make-dummies 0 9999 -> 1m10s
        rmmod dummy         -> 0.4s
    
    Benchmark after:
        make-dummies 0 999 -> 0.44s
        rmmod dummy        -> 0.065s
        make-dummies 0 9999 -> 1m36s
        rmmod dummy         -> 0.4s
    Signed-off-by: default avatarEric W. Biederman <ebiederm@xmission.com>
    7ec66d06
proc_sysctl.c 32.1 KB