|
@@ -2287,58 +2287,6 @@ int swapcache_prepare(swp_entry_t entry)
|
|
|
return __swap_duplicate(entry, SWAP_HAS_CACHE);
|
|
|
}
|
|
|
|
|
|
-/*
|
|
|
- * swap_lock prevents swap_map being freed. Don't grab an extra
|
|
|
- * reference on the swaphandle, it doesn't matter if it becomes unused.
|
|
|
- */
|
|
|
-int valid_swaphandles(swp_entry_t entry, unsigned long *offset)
|
|
|
-{
|
|
|
- struct swap_info_struct *si;
|
|
|
- int our_page_cluster = page_cluster;
|
|
|
- pgoff_t target, toff;
|
|
|
- pgoff_t base, end;
|
|
|
- int nr_pages = 0;
|
|
|
-
|
|
|
- if (!our_page_cluster) /* no readahead */
|
|
|
- return 0;
|
|
|
-
|
|
|
- si = swap_info[swp_type(entry)];
|
|
|
- target = swp_offset(entry);
|
|
|
- base = (target >> our_page_cluster) << our_page_cluster;
|
|
|
- end = base + (1 << our_page_cluster);
|
|
|
- if (!base) /* first page is swap header */
|
|
|
- base++;
|
|
|
-
|
|
|
- spin_lock(&swap_lock);
|
|
|
- if (end > si->max) /* don't go beyond end of map */
|
|
|
- end = si->max;
|
|
|
-
|
|
|
- /* Count contiguous allocated slots above our target */
|
|
|
- for (toff = target; ++toff < end; nr_pages++) {
|
|
|
- /* Don't read in free or bad pages */
|
|
|
- if (!si->swap_map[toff])
|
|
|
- break;
|
|
|
- if (swap_count(si->swap_map[toff]) == SWAP_MAP_BAD)
|
|
|
- break;
|
|
|
- }
|
|
|
- /* Count contiguous allocated slots below our target */
|
|
|
- for (toff = target; --toff >= base; nr_pages++) {
|
|
|
- /* Don't read in free or bad pages */
|
|
|
- if (!si->swap_map[toff])
|
|
|
- break;
|
|
|
- if (swap_count(si->swap_map[toff]) == SWAP_MAP_BAD)
|
|
|
- break;
|
|
|
- }
|
|
|
- spin_unlock(&swap_lock);
|
|
|
-
|
|
|
- /*
|
|
|
- * Indicate starting offset, and return number of pages to get:
|
|
|
- * if only 1, say 0, since there's then no readahead to be done.
|
|
|
- */
|
|
|
- *offset = ++toff;
|
|
|
- return nr_pages? ++nr_pages: 0;
|
|
|
-}
|
|
|
-
|
|
|
/*
|
|
|
* add_swap_count_continuation - called when a swap count is duplicated
|
|
|
* beyond SWAP_MAP_MAX, it allocates a new page and links that to the entry's
|