Loading fs/btrfs/reada.c +4 −8 Original line number Diff line number Diff line Loading @@ -260,18 +260,14 @@ static struct reada_zone *reada_find_zone(struct btrfs_fs_info *fs_info, spin_lock(&fs_info->reada_lock); ret = radix_tree_gang_lookup(&dev->reada_zones, (void **)&zone, logical >> PAGE_CACHE_SHIFT, 1); if (ret == 1) if (ret == 1 && logical >= zone->start && logical <= zone->end) { kref_get(&zone->refcnt); spin_unlock(&fs_info->reada_lock); if (ret == 1) { if (logical >= zone->start && logical <= zone->end) return zone; spin_lock(&fs_info->reada_lock); kref_put(&zone->refcnt, reada_zone_release); spin_unlock(&fs_info->reada_lock); } spin_unlock(&fs_info->reada_lock); cache = btrfs_lookup_block_group(fs_info, logical); if (!cache) return NULL; Loading Loading
fs/btrfs/reada.c +4 −8 Original line number Diff line number Diff line Loading @@ -260,18 +260,14 @@ static struct reada_zone *reada_find_zone(struct btrfs_fs_info *fs_info, spin_lock(&fs_info->reada_lock); ret = radix_tree_gang_lookup(&dev->reada_zones, (void **)&zone, logical >> PAGE_CACHE_SHIFT, 1); if (ret == 1) if (ret == 1 && logical >= zone->start && logical <= zone->end) { kref_get(&zone->refcnt); spin_unlock(&fs_info->reada_lock); if (ret == 1) { if (logical >= zone->start && logical <= zone->end) return zone; spin_lock(&fs_info->reada_lock); kref_put(&zone->refcnt, reada_zone_release); spin_unlock(&fs_info->reada_lock); } spin_unlock(&fs_info->reada_lock); cache = btrfs_lookup_block_group(fs_info, logical); if (!cache) return NULL; Loading