• Pierre Bourdon's avatar
    fs: btrfs: fix btrfs_search_tree invalid results · 1627e5e5
    Pierre Bourdon authored
    
    
    btrfs_search_tree should return the first item in the tree that is
    greater or equal to the searched item.
    
    The search algorithm did not properly handle the edge case where the
    searched item is higher than the last item of the node but lower than
    the first item of the next node. Instead of properly returning the first
    item of the next node, it was returning an invalid path pointer
    (pointing to a non-existent item after the last item of the node + 1).
    
    This fixes two issues in the btrfs driver:
      - Looking for a ROOT_ITEM could fail if it was the first item of its
        leaf node.
      - Iterating through DIR_INDEX entries (for readdir) could fail if the
        first DIR_INDEX entry was the first item of a leaf node.
    
    Signed-off-by: Pierre Bourdon's avatarPierre Bourdon <delroth@gmail.com>
    Cc: Marek Behun <marek.behun@nic.cz>
    1627e5e5