• Josef Bacik's avatar
    btrfs: introduce btrfs_path::recurse · 51899412
    Josef Bacik authored
    Our current tree locking stuff allows us to recurse with read locks if
    we're already holding the write lock.  This is necessary for the space
    cache inode, as we could be holding a lock on the root_tree root when we
    need to cache a block group, and thus need to be able to read down the
    root_tree to read in the inode cache.
    
    We can get away with this in our current locking, but we won't be able
    to with a rwsem.  Handle this by purposefully annotating the places
    where we require recursion, so that in the future we can maybe come up
    with a way to avoid the recursion.  In the case of the free space inode,
    this will be superseded by the free space tree.
    Signed-off-by: default avatarJosef Bacik <josef@toxicpanda.com>
    Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    51899412
ctree.c 143 KB