Эх сурвалжийг харах

btrfs: reada: Add missed segment checking in reada_find_zone

In rechecking zone-in-tree, we still need to check zone include
our logical address.

Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Zhao Lei 9 жил өмнө
parent
commit
8e9aa51f54
1 өөрчлөгдсөн 3 нэмэгдсэн , 1 устгасан
  1. 3 1
      fs/btrfs/reada.c

+ 3 - 1
fs/btrfs/reada.c

@@ -303,8 +303,10 @@ static struct reada_zone *reada_find_zone(struct btrfs_fs_info *fs_info,
 		kfree(zone);
 		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);
+		else
+			zone = NULL;
 	}
 	spin_unlock(&fs_info->reada_lock);