|
@@ -523,13 +523,10 @@ static unsigned long scan_swap_map(struct swap_info_struct *si,
|
|
|
/*
|
|
|
* If seek is expensive, start searching for new cluster from
|
|
|
* start of partition, to minimize the span of allocated swap.
|
|
|
- * But if seek is cheap, search from our current position, so
|
|
|
- * that swap is allocated from all over the partition: if the
|
|
|
- * Flash Translation Layer only remaps within limited zones,
|
|
|
- * we don't want to wear out the first zone too quickly.
|
|
|
+ * If seek is cheap, that is the SWP_SOLIDSTATE si->cluster_info
|
|
|
+ * case, just handled by scan_swap_map_try_ssd_cluster() above.
|
|
|
*/
|
|
|
- if (!(si->flags & SWP_SOLIDSTATE))
|
|
|
- scan_base = offset = si->lowest_bit;
|
|
|
+ scan_base = offset = si->lowest_bit;
|
|
|
last_in_cluster = offset + SWAPFILE_CLUSTER - 1;
|
|
|
|
|
|
/* Locate the first empty (unaligned) cluster */
|
|
@@ -549,26 +546,6 @@ static unsigned long scan_swap_map(struct swap_info_struct *si,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- offset = si->lowest_bit;
|
|
|
- last_in_cluster = offset + SWAPFILE_CLUSTER - 1;
|
|
|
-
|
|
|
- /* Locate the first empty (unaligned) cluster */
|
|
|
- for (; last_in_cluster < scan_base; offset++) {
|
|
|
- if (si->swap_map[offset])
|
|
|
- last_in_cluster = offset + SWAPFILE_CLUSTER;
|
|
|
- else if (offset == last_in_cluster) {
|
|
|
- spin_lock(&si->lock);
|
|
|
- offset -= SWAPFILE_CLUSTER - 1;
|
|
|
- si->cluster_next = offset;
|
|
|
- si->cluster_nr = SWAPFILE_CLUSTER - 1;
|
|
|
- goto checks;
|
|
|
- }
|
|
|
- if (unlikely(--latency_ration < 0)) {
|
|
|
- cond_resched();
|
|
|
- latency_ration = LATENCY_LIMIT;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
offset = scan_base;
|
|
|
spin_lock(&si->lock);
|
|
|
si->cluster_nr = SWAPFILE_CLUSTER - 1;
|