diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index d3b2740f4d70..d2ef8308ad0a 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -6675,7 +6675,16 @@ struct extent_map *btrfs_get_extent(struct btrfs_inode *inode, /* Chances are we'll be called again, so go ahead and do readahead */ path->reada = READA_FORWARD; - path->recurse = btrfs_is_free_space_inode(inode); + + /* + * The same explanation in load_free_space_cache applies here as well, + * we only read when we're loading the free space cache, and at that + * point the commit_root has everything we need. + */ + if (btrfs_is_free_space_inode(inode)) { + path->search_commit_root = 1; + path->skip_locking = 1; + } ret = btrfs_lookup_file_extent(NULL, root, path, objectid, start, 0); if (ret < 0) {