Skip to content
  • Matthew Wilcox's avatar
    radix-tree: introduce radix_tree_empty · e9256efc
    Matthew Wilcox authored
    Commit e6145236
    
     ("radix_tree: add support for multi-order entries")
    left the impression that the support for multiorder radix tree entries
    was functional.  As soon as Ross tried to use it, it became apparent
    that my testing was completely inadequate, and it didn't even work a
    little bit for orders that were not a multiple of shift.
    
    This series of patches is the result of about 6 weeks of redesign,
    reimplementation, testing, arguing and hair-pulling.  The great news is
    that the test-suite is now far better than it was.  That's reflected in
    the diffstat for the test-suite alone:
    
     12 files changed, 436 insertions(+), 28 deletions(-)
    
    The highlight for users of the tree is that the restriction on the order
    of inserted entries being >= RADIX_TREE_MAP_SHIFT is now gone; the radix
    tree now supports any order between 0 and 64.
    
    For those who are interested in how the tree works, patch 9 is probably
    the most interesting one as it introduces the new machinery for handling
    sibling entries.
    
    I've tried to be fair in attributing authorship to the person who
    contributed the majority of the code in each patch; Ross has been an
    invaluable partner in the development of this support and it's fair to
    say that each of us has code in every commit.
    
    I should also express my appreciation of the 0day testing.  It prompted
    me that I was bloating the tinyconfig in an unacceptable way, and it
    bisected to a commit which contained a rather nasty memory-corruption
    bug.
    
    This patch (of 29):
    
    The irqdomain code was checking for 0 or 1 entries, not 0 entries like
    the comment said they were.  Introduce a new helper that will actually
    check for an empty tree.
    
    Signed-off-by: default avatarMatthew Wilcox <willy@linux.intel.com>
    Reviewed-by: default avatarRoss Zwisler <ross.zwisler@linux.intel.com>
    Reviewed-by: default avatarJan Kara <jack@suse.cz>
    Cc: Konstantin Khlebnikov <koct9i@gmail.com>
    Cc: Kirill Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Neil Brown <neilb@suse.de>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    e9256efc