diff options
Diffstat (limited to 'mm/swapfile.c')
-rw-r--r-- | mm/swapfile.c | 52 |
1 files changed, 0 insertions, 52 deletions
diff --git a/mm/swapfile.c b/mm/swapfile.c index 44595a373e42..b82c028cfcc6 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c | |||
@@ -2288,58 +2288,6 @@ int swapcache_prepare(swp_entry_t entry) | |||
2288 | } | 2288 | } |
2289 | 2289 | ||
2290 | /* | 2290 | /* |
2291 | * swap_lock prevents swap_map being freed. Don't grab an extra | ||
2292 | * reference on the swaphandle, it doesn't matter if it becomes unused. | ||
2293 | */ | ||
2294 | int valid_swaphandles(swp_entry_t entry, unsigned long *offset) | ||
2295 | { | ||
2296 | struct swap_info_struct *si; | ||
2297 | int our_page_cluster = page_cluster; | ||
2298 | pgoff_t target, toff; | ||
2299 | pgoff_t base, end; | ||
2300 | int nr_pages = 0; | ||
2301 | |||
2302 | if (!our_page_cluster) /* no readahead */ | ||
2303 | return 0; | ||
2304 | |||
2305 | si = swap_info[swp_type(entry)]; | ||
2306 | target = swp_offset(entry); | ||
2307 | base = (target >> our_page_cluster) << our_page_cluster; | ||
2308 | end = base + (1 << our_page_cluster); | ||
2309 | if (!base) /* first page is swap header */ | ||
2310 | base++; | ||
2311 | |||
2312 | spin_lock(&swap_lock); | ||
2313 | if (end > si->max) /* don't go beyond end of map */ | ||
2314 | end = si->max; | ||
2315 | |||
2316 | /* Count contiguous allocated slots above our target */ | ||
2317 | for (toff = target; ++toff < end; nr_pages++) { | ||
2318 | /* Don't read in free or bad pages */ | ||
2319 | if (!si->swap_map[toff]) | ||
2320 | break; | ||
2321 | if (swap_count(si->swap_map[toff]) == SWAP_MAP_BAD) | ||
2322 | break; | ||
2323 | } | ||
2324 | /* Count contiguous allocated slots below our target */ | ||
2325 | for (toff = target; --toff >= base; nr_pages++) { | ||
2326 | /* Don't read in free or bad pages */ | ||
2327 | if (!si->swap_map[toff]) | ||
2328 | break; | ||
2329 | if (swap_count(si->swap_map[toff]) == SWAP_MAP_BAD) | ||
2330 | break; | ||
2331 | } | ||
2332 | spin_unlock(&swap_lock); | ||
2333 | |||
2334 | /* | ||
2335 | * Indicate starting offset, and return number of pages to get: | ||
2336 | * if only 1, say 0, since there's then no readahead to be done. | ||
2337 | */ | ||
2338 | *offset = ++toff; | ||
2339 | return nr_pages? ++nr_pages: 0; | ||
2340 | } | ||
2341 | |||
2342 | /* | ||
2343 | * add_swap_count_continuation - called when a swap count is duplicated | 2291 | * add_swap_count_continuation - called when a swap count is duplicated |
2344 | * beyond SWAP_MAP_MAX, it allocates a new page and links that to the entry's | 2292 | * beyond SWAP_MAP_MAX, it allocates a new page and links that to the entry's |
2345 | * page of the original vmalloc'ed swap_map, to hold the continuation count | 2293 | * page of the original vmalloc'ed swap_map, to hold the continuation count |