xref: /openbmc/linux/mm/swapfile.c (revision 545e4006)
1 /*
2  *  linux/mm/swapfile.c
3  *
4  *  Copyright (C) 1991, 1992, 1993, 1994  Linus Torvalds
5  *  Swap reorganised 29.12.95, Stephen Tweedie
6  */
7 
8 #include <linux/mm.h>
9 #include <linux/hugetlb.h>
10 #include <linux/mman.h>
11 #include <linux/slab.h>
12 #include <linux/kernel_stat.h>
13 #include <linux/swap.h>
14 #include <linux/vmalloc.h>
15 #include <linux/pagemap.h>
16 #include <linux/namei.h>
17 #include <linux/shm.h>
18 #include <linux/blkdev.h>
19 #include <linux/writeback.h>
20 #include <linux/proc_fs.h>
21 #include <linux/seq_file.h>
22 #include <linux/init.h>
23 #include <linux/module.h>
24 #include <linux/rmap.h>
25 #include <linux/security.h>
26 #include <linux/backing-dev.h>
27 #include <linux/mutex.h>
28 #include <linux/capability.h>
29 #include <linux/syscalls.h>
30 #include <linux/memcontrol.h>
31 
32 #include <asm/pgtable.h>
33 #include <asm/tlbflush.h>
34 #include <linux/swapops.h>
35 
36 DEFINE_SPINLOCK(swap_lock);
37 unsigned int nr_swapfiles;
38 long total_swap_pages;
39 static int swap_overflow;
40 static int least_priority;
41 
42 static const char Bad_file[] = "Bad swap file entry ";
43 static const char Unused_file[] = "Unused swap file entry ";
44 static const char Bad_offset[] = "Bad swap offset entry ";
45 static const char Unused_offset[] = "Unused swap offset entry ";
46 
47 struct swap_list_t swap_list = {-1, -1};
48 
49 static struct swap_info_struct swap_info[MAX_SWAPFILES];
50 
51 static DEFINE_MUTEX(swapon_mutex);
52 
53 /*
54  * We need this because the bdev->unplug_fn can sleep and we cannot
55  * hold swap_lock while calling the unplug_fn. And swap_lock
56  * cannot be turned into a mutex.
57  */
58 static DECLARE_RWSEM(swap_unplug_sem);
59 
60 void swap_unplug_io_fn(struct backing_dev_info *unused_bdi, struct page *page)
61 {
62 	swp_entry_t entry;
63 
64 	down_read(&swap_unplug_sem);
65 	entry.val = page_private(page);
66 	if (PageSwapCache(page)) {
67 		struct block_device *bdev = swap_info[swp_type(entry)].bdev;
68 		struct backing_dev_info *bdi;
69 
70 		/*
71 		 * If the page is removed from swapcache from under us (with a
72 		 * racy try_to_unuse/swapoff) we need an additional reference
73 		 * count to avoid reading garbage from page_private(page) above.
74 		 * If the WARN_ON triggers during a swapoff it maybe the race
75 		 * condition and it's harmless. However if it triggers without
76 		 * swapoff it signals a problem.
77 		 */
78 		WARN_ON(page_count(page) <= 1);
79 
80 		bdi = bdev->bd_inode->i_mapping->backing_dev_info;
81 		blk_run_backing_dev(bdi, page);
82 	}
83 	up_read(&swap_unplug_sem);
84 }
85 
86 #define SWAPFILE_CLUSTER	256
87 #define LATENCY_LIMIT		256
88 
89 static inline unsigned long scan_swap_map(struct swap_info_struct *si)
90 {
91 	unsigned long offset, last_in_cluster;
92 	int latency_ration = LATENCY_LIMIT;
93 
94 	/*
95 	 * We try to cluster swap pages by allocating them sequentially
96 	 * in swap.  Once we've allocated SWAPFILE_CLUSTER pages this
97 	 * way, however, we resort to first-free allocation, starting
98 	 * a new cluster.  This prevents us from scattering swap pages
99 	 * all over the entire swap partition, so that we reduce
100 	 * overall disk seek times between swap pages.  -- sct
101 	 * But we do now try to find an empty cluster.  -Andrea
102 	 */
103 
104 	si->flags += SWP_SCANNING;
105 	if (unlikely(!si->cluster_nr)) {
106 		si->cluster_nr = SWAPFILE_CLUSTER - 1;
107 		if (si->pages - si->inuse_pages < SWAPFILE_CLUSTER)
108 			goto lowest;
109 		spin_unlock(&swap_lock);
110 
111 		offset = si->lowest_bit;
112 		last_in_cluster = offset + SWAPFILE_CLUSTER - 1;
113 
114 		/* Locate the first empty (unaligned) cluster */
115 		for (; last_in_cluster <= si->highest_bit; offset++) {
116 			if (si->swap_map[offset])
117 				last_in_cluster = offset + SWAPFILE_CLUSTER;
118 			else if (offset == last_in_cluster) {
119 				spin_lock(&swap_lock);
120 				si->cluster_next = offset-SWAPFILE_CLUSTER+1;
121 				goto cluster;
122 			}
123 			if (unlikely(--latency_ration < 0)) {
124 				cond_resched();
125 				latency_ration = LATENCY_LIMIT;
126 			}
127 		}
128 		spin_lock(&swap_lock);
129 		goto lowest;
130 	}
131 
132 	si->cluster_nr--;
133 cluster:
134 	offset = si->cluster_next;
135 	if (offset > si->highest_bit)
136 lowest:		offset = si->lowest_bit;
137 checks:	if (!(si->flags & SWP_WRITEOK))
138 		goto no_page;
139 	if (!si->highest_bit)
140 		goto no_page;
141 	if (!si->swap_map[offset]) {
142 		if (offset == si->lowest_bit)
143 			si->lowest_bit++;
144 		if (offset == si->highest_bit)
145 			si->highest_bit--;
146 		si->inuse_pages++;
147 		if (si->inuse_pages == si->pages) {
148 			si->lowest_bit = si->max;
149 			si->highest_bit = 0;
150 		}
151 		si->swap_map[offset] = 1;
152 		si->cluster_next = offset + 1;
153 		si->flags -= SWP_SCANNING;
154 		return offset;
155 	}
156 
157 	spin_unlock(&swap_lock);
158 	while (++offset <= si->highest_bit) {
159 		if (!si->swap_map[offset]) {
160 			spin_lock(&swap_lock);
161 			goto checks;
162 		}
163 		if (unlikely(--latency_ration < 0)) {
164 			cond_resched();
165 			latency_ration = LATENCY_LIMIT;
166 		}
167 	}
168 	spin_lock(&swap_lock);
169 	goto lowest;
170 
171 no_page:
172 	si->flags -= SWP_SCANNING;
173 	return 0;
174 }
175 
176 swp_entry_t get_swap_page(void)
177 {
178 	struct swap_info_struct *si;
179 	pgoff_t offset;
180 	int type, next;
181 	int wrapped = 0;
182 
183 	spin_lock(&swap_lock);
184 	if (nr_swap_pages <= 0)
185 		goto noswap;
186 	nr_swap_pages--;
187 
188 	for (type = swap_list.next; type >= 0 && wrapped < 2; type = next) {
189 		si = swap_info + type;
190 		next = si->next;
191 		if (next < 0 ||
192 		    (!wrapped && si->prio != swap_info[next].prio)) {
193 			next = swap_list.head;
194 			wrapped++;
195 		}
196 
197 		if (!si->highest_bit)
198 			continue;
199 		if (!(si->flags & SWP_WRITEOK))
200 			continue;
201 
202 		swap_list.next = next;
203 		offset = scan_swap_map(si);
204 		if (offset) {
205 			spin_unlock(&swap_lock);
206 			return swp_entry(type, offset);
207 		}
208 		next = swap_list.next;
209 	}
210 
211 	nr_swap_pages++;
212 noswap:
213 	spin_unlock(&swap_lock);
214 	return (swp_entry_t) {0};
215 }
216 
217 swp_entry_t get_swap_page_of_type(int type)
218 {
219 	struct swap_info_struct *si;
220 	pgoff_t offset;
221 
222 	spin_lock(&swap_lock);
223 	si = swap_info + type;
224 	if (si->flags & SWP_WRITEOK) {
225 		nr_swap_pages--;
226 		offset = scan_swap_map(si);
227 		if (offset) {
228 			spin_unlock(&swap_lock);
229 			return swp_entry(type, offset);
230 		}
231 		nr_swap_pages++;
232 	}
233 	spin_unlock(&swap_lock);
234 	return (swp_entry_t) {0};
235 }
236 
237 static struct swap_info_struct * swap_info_get(swp_entry_t entry)
238 {
239 	struct swap_info_struct * p;
240 	unsigned long offset, type;
241 
242 	if (!entry.val)
243 		goto out;
244 	type = swp_type(entry);
245 	if (type >= nr_swapfiles)
246 		goto bad_nofile;
247 	p = & swap_info[type];
248 	if (!(p->flags & SWP_USED))
249 		goto bad_device;
250 	offset = swp_offset(entry);
251 	if (offset >= p->max)
252 		goto bad_offset;
253 	if (!p->swap_map[offset])
254 		goto bad_free;
255 	spin_lock(&swap_lock);
256 	return p;
257 
258 bad_free:
259 	printk(KERN_ERR "swap_free: %s%08lx\n", Unused_offset, entry.val);
260 	goto out;
261 bad_offset:
262 	printk(KERN_ERR "swap_free: %s%08lx\n", Bad_offset, entry.val);
263 	goto out;
264 bad_device:
265 	printk(KERN_ERR "swap_free: %s%08lx\n", Unused_file, entry.val);
266 	goto out;
267 bad_nofile:
268 	printk(KERN_ERR "swap_free: %s%08lx\n", Bad_file, entry.val);
269 out:
270 	return NULL;
271 }
272 
273 static int swap_entry_free(struct swap_info_struct *p, unsigned long offset)
274 {
275 	int count = p->swap_map[offset];
276 
277 	if (count < SWAP_MAP_MAX) {
278 		count--;
279 		p->swap_map[offset] = count;
280 		if (!count) {
281 			if (offset < p->lowest_bit)
282 				p->lowest_bit = offset;
283 			if (offset > p->highest_bit)
284 				p->highest_bit = offset;
285 			if (p->prio > swap_info[swap_list.next].prio)
286 				swap_list.next = p - swap_info;
287 			nr_swap_pages++;
288 			p->inuse_pages--;
289 		}
290 	}
291 	return count;
292 }
293 
294 /*
295  * Caller has made sure that the swapdevice corresponding to entry
296  * is still around or has not been recycled.
297  */
298 void swap_free(swp_entry_t entry)
299 {
300 	struct swap_info_struct * p;
301 
302 	p = swap_info_get(entry);
303 	if (p) {
304 		swap_entry_free(p, swp_offset(entry));
305 		spin_unlock(&swap_lock);
306 	}
307 }
308 
309 /*
310  * How many references to page are currently swapped out?
311  */
312 static inline int page_swapcount(struct page *page)
313 {
314 	int count = 0;
315 	struct swap_info_struct *p;
316 	swp_entry_t entry;
317 
318 	entry.val = page_private(page);
319 	p = swap_info_get(entry);
320 	if (p) {
321 		/* Subtract the 1 for the swap cache itself */
322 		count = p->swap_map[swp_offset(entry)] - 1;
323 		spin_unlock(&swap_lock);
324 	}
325 	return count;
326 }
327 
328 /*
329  * We can use this swap cache entry directly
330  * if there are no other references to it.
331  */
332 int can_share_swap_page(struct page *page)
333 {
334 	int count;
335 
336 	BUG_ON(!PageLocked(page));
337 	count = page_mapcount(page);
338 	if (count <= 1 && PageSwapCache(page))
339 		count += page_swapcount(page);
340 	return count == 1;
341 }
342 
343 /*
344  * Work out if there are any other processes sharing this
345  * swap cache page. Free it if you can. Return success.
346  */
347 int remove_exclusive_swap_page(struct page *page)
348 {
349 	int retval;
350 	struct swap_info_struct * p;
351 	swp_entry_t entry;
352 
353 	BUG_ON(PagePrivate(page));
354 	BUG_ON(!PageLocked(page));
355 
356 	if (!PageSwapCache(page))
357 		return 0;
358 	if (PageWriteback(page))
359 		return 0;
360 	if (page_count(page) != 2) /* 2: us + cache */
361 		return 0;
362 
363 	entry.val = page_private(page);
364 	p = swap_info_get(entry);
365 	if (!p)
366 		return 0;
367 
368 	/* Is the only swap cache user the cache itself? */
369 	retval = 0;
370 	if (p->swap_map[swp_offset(entry)] == 1) {
371 		/* Recheck the page count with the swapcache lock held.. */
372 		write_lock_irq(&swapper_space.tree_lock);
373 		if ((page_count(page) == 2) && !PageWriteback(page)) {
374 			__delete_from_swap_cache(page);
375 			SetPageDirty(page);
376 			retval = 1;
377 		}
378 		write_unlock_irq(&swapper_space.tree_lock);
379 	}
380 	spin_unlock(&swap_lock);
381 
382 	if (retval) {
383 		swap_free(entry);
384 		page_cache_release(page);
385 	}
386 
387 	return retval;
388 }
389 
390 /*
391  * Free the swap entry like above, but also try to
392  * free the page cache entry if it is the last user.
393  */
394 void free_swap_and_cache(swp_entry_t entry)
395 {
396 	struct swap_info_struct * p;
397 	struct page *page = NULL;
398 
399 	if (is_migration_entry(entry))
400 		return;
401 
402 	p = swap_info_get(entry);
403 	if (p) {
404 		if (swap_entry_free(p, swp_offset(entry)) == 1) {
405 			page = find_get_page(&swapper_space, entry.val);
406 			if (page && unlikely(TestSetPageLocked(page))) {
407 				page_cache_release(page);
408 				page = NULL;
409 			}
410 		}
411 		spin_unlock(&swap_lock);
412 	}
413 	if (page) {
414 		int one_user;
415 
416 		BUG_ON(PagePrivate(page));
417 		one_user = (page_count(page) == 2);
418 		/* Only cache user (+us), or swap space full? Free it! */
419 		/* Also recheck PageSwapCache after page is locked (above) */
420 		if (PageSwapCache(page) && !PageWriteback(page) &&
421 					(one_user || vm_swap_full())) {
422 			delete_from_swap_cache(page);
423 			SetPageDirty(page);
424 		}
425 		unlock_page(page);
426 		page_cache_release(page);
427 	}
428 }
429 
430 #ifdef CONFIG_HIBERNATION
431 /*
432  * Find the swap type that corresponds to given device (if any).
433  *
434  * @offset - number of the PAGE_SIZE-sized block of the device, starting
435  * from 0, in which the swap header is expected to be located.
436  *
437  * This is needed for the suspend to disk (aka swsusp).
438  */
439 int swap_type_of(dev_t device, sector_t offset, struct block_device **bdev_p)
440 {
441 	struct block_device *bdev = NULL;
442 	int i;
443 
444 	if (device)
445 		bdev = bdget(device);
446 
447 	spin_lock(&swap_lock);
448 	for (i = 0; i < nr_swapfiles; i++) {
449 		struct swap_info_struct *sis = swap_info + i;
450 
451 		if (!(sis->flags & SWP_WRITEOK))
452 			continue;
453 
454 		if (!bdev) {
455 			if (bdev_p)
456 				*bdev_p = sis->bdev;
457 
458 			spin_unlock(&swap_lock);
459 			return i;
460 		}
461 		if (bdev == sis->bdev) {
462 			struct swap_extent *se;
463 
464 			se = list_entry(sis->extent_list.next,
465 					struct swap_extent, list);
466 			if (se->start_block == offset) {
467 				if (bdev_p)
468 					*bdev_p = sis->bdev;
469 
470 				spin_unlock(&swap_lock);
471 				bdput(bdev);
472 				return i;
473 			}
474 		}
475 	}
476 	spin_unlock(&swap_lock);
477 	if (bdev)
478 		bdput(bdev);
479 
480 	return -ENODEV;
481 }
482 
483 /*
484  * Return either the total number of swap pages of given type, or the number
485  * of free pages of that type (depending on @free)
486  *
487  * This is needed for software suspend
488  */
489 unsigned int count_swap_pages(int type, int free)
490 {
491 	unsigned int n = 0;
492 
493 	if (type < nr_swapfiles) {
494 		spin_lock(&swap_lock);
495 		if (swap_info[type].flags & SWP_WRITEOK) {
496 			n = swap_info[type].pages;
497 			if (free)
498 				n -= swap_info[type].inuse_pages;
499 		}
500 		spin_unlock(&swap_lock);
501 	}
502 	return n;
503 }
504 #endif
505 
506 /*
507  * No need to decide whether this PTE shares the swap entry with others,
508  * just let do_wp_page work it out if a write is requested later - to
509  * force COW, vm_page_prot omits write permission from any private vma.
510  */
511 static int unuse_pte(struct vm_area_struct *vma, pmd_t *pmd,
512 		unsigned long addr, swp_entry_t entry, struct page *page)
513 {
514 	spinlock_t *ptl;
515 	pte_t *pte;
516 	int ret = 1;
517 
518 	if (mem_cgroup_charge(page, vma->vm_mm, GFP_KERNEL))
519 		ret = -ENOMEM;
520 
521 	pte = pte_offset_map_lock(vma->vm_mm, pmd, addr, &ptl);
522 	if (unlikely(!pte_same(*pte, swp_entry_to_pte(entry)))) {
523 		if (ret > 0)
524 			mem_cgroup_uncharge_page(page);
525 		ret = 0;
526 		goto out;
527 	}
528 
529 	inc_mm_counter(vma->vm_mm, anon_rss);
530 	get_page(page);
531 	set_pte_at(vma->vm_mm, addr, pte,
532 		   pte_mkold(mk_pte(page, vma->vm_page_prot)));
533 	page_add_anon_rmap(page, vma, addr);
534 	swap_free(entry);
535 	/*
536 	 * Move the page to the active list so it is not
537 	 * immediately swapped out again after swapon.
538 	 */
539 	activate_page(page);
540 out:
541 	pte_unmap_unlock(pte, ptl);
542 	return ret;
543 }
544 
545 static int unuse_pte_range(struct vm_area_struct *vma, pmd_t *pmd,
546 				unsigned long addr, unsigned long end,
547 				swp_entry_t entry, struct page *page)
548 {
549 	pte_t swp_pte = swp_entry_to_pte(entry);
550 	pte_t *pte;
551 	int ret = 0;
552 
553 	/*
554 	 * We don't actually need pte lock while scanning for swp_pte: since
555 	 * we hold page lock and mmap_sem, swp_pte cannot be inserted into the
556 	 * page table while we're scanning; though it could get zapped, and on
557 	 * some architectures (e.g. x86_32 with PAE) we might catch a glimpse
558 	 * of unmatched parts which look like swp_pte, so unuse_pte must
559 	 * recheck under pte lock.  Scanning without pte lock lets it be
560 	 * preemptible whenever CONFIG_PREEMPT but not CONFIG_HIGHPTE.
561 	 */
562 	pte = pte_offset_map(pmd, addr);
563 	do {
564 		/*
565 		 * swapoff spends a _lot_ of time in this loop!
566 		 * Test inline before going to call unuse_pte.
567 		 */
568 		if (unlikely(pte_same(*pte, swp_pte))) {
569 			pte_unmap(pte);
570 			ret = unuse_pte(vma, pmd, addr, entry, page);
571 			if (ret)
572 				goto out;
573 			pte = pte_offset_map(pmd, addr);
574 		}
575 	} while (pte++, addr += PAGE_SIZE, addr != end);
576 	pte_unmap(pte - 1);
577 out:
578 	return ret;
579 }
580 
581 static inline int unuse_pmd_range(struct vm_area_struct *vma, pud_t *pud,
582 				unsigned long addr, unsigned long end,
583 				swp_entry_t entry, struct page *page)
584 {
585 	pmd_t *pmd;
586 	unsigned long next;
587 	int ret;
588 
589 	pmd = pmd_offset(pud, addr);
590 	do {
591 		next = pmd_addr_end(addr, end);
592 		if (pmd_none_or_clear_bad(pmd))
593 			continue;
594 		ret = unuse_pte_range(vma, pmd, addr, next, entry, page);
595 		if (ret)
596 			return ret;
597 	} while (pmd++, addr = next, addr != end);
598 	return 0;
599 }
600 
601 static inline int unuse_pud_range(struct vm_area_struct *vma, pgd_t *pgd,
602 				unsigned long addr, unsigned long end,
603 				swp_entry_t entry, struct page *page)
604 {
605 	pud_t *pud;
606 	unsigned long next;
607 	int ret;
608 
609 	pud = pud_offset(pgd, addr);
610 	do {
611 		next = pud_addr_end(addr, end);
612 		if (pud_none_or_clear_bad(pud))
613 			continue;
614 		ret = unuse_pmd_range(vma, pud, addr, next, entry, page);
615 		if (ret)
616 			return ret;
617 	} while (pud++, addr = next, addr != end);
618 	return 0;
619 }
620 
621 static int unuse_vma(struct vm_area_struct *vma,
622 				swp_entry_t entry, struct page *page)
623 {
624 	pgd_t *pgd;
625 	unsigned long addr, end, next;
626 	int ret;
627 
628 	if (page->mapping) {
629 		addr = page_address_in_vma(page, vma);
630 		if (addr == -EFAULT)
631 			return 0;
632 		else
633 			end = addr + PAGE_SIZE;
634 	} else {
635 		addr = vma->vm_start;
636 		end = vma->vm_end;
637 	}
638 
639 	pgd = pgd_offset(vma->vm_mm, addr);
640 	do {
641 		next = pgd_addr_end(addr, end);
642 		if (pgd_none_or_clear_bad(pgd))
643 			continue;
644 		ret = unuse_pud_range(vma, pgd, addr, next, entry, page);
645 		if (ret)
646 			return ret;
647 	} while (pgd++, addr = next, addr != end);
648 	return 0;
649 }
650 
651 static int unuse_mm(struct mm_struct *mm,
652 				swp_entry_t entry, struct page *page)
653 {
654 	struct vm_area_struct *vma;
655 	int ret = 0;
656 
657 	if (!down_read_trylock(&mm->mmap_sem)) {
658 		/*
659 		 * Activate page so shrink_cache is unlikely to unmap its
660 		 * ptes while lock is dropped, so swapoff can make progress.
661 		 */
662 		activate_page(page);
663 		unlock_page(page);
664 		down_read(&mm->mmap_sem);
665 		lock_page(page);
666 	}
667 	for (vma = mm->mmap; vma; vma = vma->vm_next) {
668 		if (vma->anon_vma && (ret = unuse_vma(vma, entry, page)))
669 			break;
670 	}
671 	up_read(&mm->mmap_sem);
672 	return (ret < 0)? ret: 0;
673 }
674 
675 /*
676  * Scan swap_map from current position to next entry still in use.
677  * Recycle to start on reaching the end, returning 0 when empty.
678  */
679 static unsigned int find_next_to_unuse(struct swap_info_struct *si,
680 					unsigned int prev)
681 {
682 	unsigned int max = si->max;
683 	unsigned int i = prev;
684 	int count;
685 
686 	/*
687 	 * No need for swap_lock here: we're just looking
688 	 * for whether an entry is in use, not modifying it; false
689 	 * hits are okay, and sys_swapoff() has already prevented new
690 	 * allocations from this area (while holding swap_lock).
691 	 */
692 	for (;;) {
693 		if (++i >= max) {
694 			if (!prev) {
695 				i = 0;
696 				break;
697 			}
698 			/*
699 			 * No entries in use at top of swap_map,
700 			 * loop back to start and recheck there.
701 			 */
702 			max = prev + 1;
703 			prev = 0;
704 			i = 1;
705 		}
706 		count = si->swap_map[i];
707 		if (count && count != SWAP_MAP_BAD)
708 			break;
709 	}
710 	return i;
711 }
712 
713 /*
714  * We completely avoid races by reading each swap page in advance,
715  * and then search for the process using it.  All the necessary
716  * page table adjustments can then be made atomically.
717  */
718 static int try_to_unuse(unsigned int type)
719 {
720 	struct swap_info_struct * si = &swap_info[type];
721 	struct mm_struct *start_mm;
722 	unsigned short *swap_map;
723 	unsigned short swcount;
724 	struct page *page;
725 	swp_entry_t entry;
726 	unsigned int i = 0;
727 	int retval = 0;
728 	int reset_overflow = 0;
729 	int shmem;
730 
731 	/*
732 	 * When searching mms for an entry, a good strategy is to
733 	 * start at the first mm we freed the previous entry from
734 	 * (though actually we don't notice whether we or coincidence
735 	 * freed the entry).  Initialize this start_mm with a hold.
736 	 *
737 	 * A simpler strategy would be to start at the last mm we
738 	 * freed the previous entry from; but that would take less
739 	 * advantage of mmlist ordering, which clusters forked mms
740 	 * together, child after parent.  If we race with dup_mmap(), we
741 	 * prefer to resolve parent before child, lest we miss entries
742 	 * duplicated after we scanned child: using last mm would invert
743 	 * that.  Though it's only a serious concern when an overflowed
744 	 * swap count is reset from SWAP_MAP_MAX, preventing a rescan.
745 	 */
746 	start_mm = &init_mm;
747 	atomic_inc(&init_mm.mm_users);
748 
749 	/*
750 	 * Keep on scanning until all entries have gone.  Usually,
751 	 * one pass through swap_map is enough, but not necessarily:
752 	 * there are races when an instance of an entry might be missed.
753 	 */
754 	while ((i = find_next_to_unuse(si, i)) != 0) {
755 		if (signal_pending(current)) {
756 			retval = -EINTR;
757 			break;
758 		}
759 
760 		/*
761 		 * Get a page for the entry, using the existing swap
762 		 * cache page if there is one.  Otherwise, get a clean
763 		 * page and read the swap into it.
764 		 */
765 		swap_map = &si->swap_map[i];
766 		entry = swp_entry(type, i);
767 		page = read_swap_cache_async(entry,
768 					GFP_HIGHUSER_MOVABLE, NULL, 0);
769 		if (!page) {
770 			/*
771 			 * Either swap_duplicate() failed because entry
772 			 * has been freed independently, and will not be
773 			 * reused since sys_swapoff() already disabled
774 			 * allocation from here, or alloc_page() failed.
775 			 */
776 			if (!*swap_map)
777 				continue;
778 			retval = -ENOMEM;
779 			break;
780 		}
781 
782 		/*
783 		 * Don't hold on to start_mm if it looks like exiting.
784 		 */
785 		if (atomic_read(&start_mm->mm_users) == 1) {
786 			mmput(start_mm);
787 			start_mm = &init_mm;
788 			atomic_inc(&init_mm.mm_users);
789 		}
790 
791 		/*
792 		 * Wait for and lock page.  When do_swap_page races with
793 		 * try_to_unuse, do_swap_page can handle the fault much
794 		 * faster than try_to_unuse can locate the entry.  This
795 		 * apparently redundant "wait_on_page_locked" lets try_to_unuse
796 		 * defer to do_swap_page in such a case - in some tests,
797 		 * do_swap_page and try_to_unuse repeatedly compete.
798 		 */
799 		wait_on_page_locked(page);
800 		wait_on_page_writeback(page);
801 		lock_page(page);
802 		wait_on_page_writeback(page);
803 
804 		/*
805 		 * Remove all references to entry.
806 		 * Whenever we reach init_mm, there's no address space
807 		 * to search, but use it as a reminder to search shmem.
808 		 */
809 		shmem = 0;
810 		swcount = *swap_map;
811 		if (swcount > 1) {
812 			if (start_mm == &init_mm)
813 				shmem = shmem_unuse(entry, page);
814 			else
815 				retval = unuse_mm(start_mm, entry, page);
816 		}
817 		if (*swap_map > 1) {
818 			int set_start_mm = (*swap_map >= swcount);
819 			struct list_head *p = &start_mm->mmlist;
820 			struct mm_struct *new_start_mm = start_mm;
821 			struct mm_struct *prev_mm = start_mm;
822 			struct mm_struct *mm;
823 
824 			atomic_inc(&new_start_mm->mm_users);
825 			atomic_inc(&prev_mm->mm_users);
826 			spin_lock(&mmlist_lock);
827 			while (*swap_map > 1 && !retval && !shmem &&
828 					(p = p->next) != &start_mm->mmlist) {
829 				mm = list_entry(p, struct mm_struct, mmlist);
830 				if (!atomic_inc_not_zero(&mm->mm_users))
831 					continue;
832 				spin_unlock(&mmlist_lock);
833 				mmput(prev_mm);
834 				prev_mm = mm;
835 
836 				cond_resched();
837 
838 				swcount = *swap_map;
839 				if (swcount <= 1)
840 					;
841 				else if (mm == &init_mm) {
842 					set_start_mm = 1;
843 					shmem = shmem_unuse(entry, page);
844 				} else
845 					retval = unuse_mm(mm, entry, page);
846 				if (set_start_mm && *swap_map < swcount) {
847 					mmput(new_start_mm);
848 					atomic_inc(&mm->mm_users);
849 					new_start_mm = mm;
850 					set_start_mm = 0;
851 				}
852 				spin_lock(&mmlist_lock);
853 			}
854 			spin_unlock(&mmlist_lock);
855 			mmput(prev_mm);
856 			mmput(start_mm);
857 			start_mm = new_start_mm;
858 		}
859 		if (shmem) {
860 			/* page has already been unlocked and released */
861 			if (shmem > 0)
862 				continue;
863 			retval = shmem;
864 			break;
865 		}
866 		if (retval) {
867 			unlock_page(page);
868 			page_cache_release(page);
869 			break;
870 		}
871 
872 		/*
873 		 * How could swap count reach 0x7fff when the maximum
874 		 * pid is 0x7fff, and there's no way to repeat a swap
875 		 * page within an mm (except in shmem, where it's the
876 		 * shared object which takes the reference count)?
877 		 * We believe SWAP_MAP_MAX cannot occur in Linux 2.4.
878 		 *
879 		 * If that's wrong, then we should worry more about
880 		 * exit_mmap() and do_munmap() cases described above:
881 		 * we might be resetting SWAP_MAP_MAX too early here.
882 		 * We know "Undead"s can happen, they're okay, so don't
883 		 * report them; but do report if we reset SWAP_MAP_MAX.
884 		 */
885 		if (*swap_map == SWAP_MAP_MAX) {
886 			spin_lock(&swap_lock);
887 			*swap_map = 1;
888 			spin_unlock(&swap_lock);
889 			reset_overflow = 1;
890 		}
891 
892 		/*
893 		 * If a reference remains (rare), we would like to leave
894 		 * the page in the swap cache; but try_to_unmap could
895 		 * then re-duplicate the entry once we drop page lock,
896 		 * so we might loop indefinitely; also, that page could
897 		 * not be swapped out to other storage meanwhile.  So:
898 		 * delete from cache even if there's another reference,
899 		 * after ensuring that the data has been saved to disk -
900 		 * since if the reference remains (rarer), it will be
901 		 * read from disk into another page.  Splitting into two
902 		 * pages would be incorrect if swap supported "shared
903 		 * private" pages, but they are handled by tmpfs files.
904 		 */
905 		if ((*swap_map > 1) && PageDirty(page) && PageSwapCache(page)) {
906 			struct writeback_control wbc = {
907 				.sync_mode = WB_SYNC_NONE,
908 			};
909 
910 			swap_writepage(page, &wbc);
911 			lock_page(page);
912 			wait_on_page_writeback(page);
913 		}
914 		if (PageSwapCache(page))
915 			delete_from_swap_cache(page);
916 
917 		/*
918 		 * So we could skip searching mms once swap count went
919 		 * to 1, we did not mark any present ptes as dirty: must
920 		 * mark page dirty so shrink_page_list will preserve it.
921 		 */
922 		SetPageDirty(page);
923 		unlock_page(page);
924 		page_cache_release(page);
925 
926 		/*
927 		 * Make sure that we aren't completely killing
928 		 * interactive performance.
929 		 */
930 		cond_resched();
931 	}
932 
933 	mmput(start_mm);
934 	if (reset_overflow) {
935 		printk(KERN_WARNING "swapoff: cleared swap entry overflow\n");
936 		swap_overflow = 0;
937 	}
938 	return retval;
939 }
940 
941 /*
942  * After a successful try_to_unuse, if no swap is now in use, we know
943  * we can empty the mmlist.  swap_lock must be held on entry and exit.
944  * Note that mmlist_lock nests inside swap_lock, and an mm must be
945  * added to the mmlist just after page_duplicate - before would be racy.
946  */
947 static void drain_mmlist(void)
948 {
949 	struct list_head *p, *next;
950 	unsigned int i;
951 
952 	for (i = 0; i < nr_swapfiles; i++)
953 		if (swap_info[i].inuse_pages)
954 			return;
955 	spin_lock(&mmlist_lock);
956 	list_for_each_safe(p, next, &init_mm.mmlist)
957 		list_del_init(p);
958 	spin_unlock(&mmlist_lock);
959 }
960 
961 /*
962  * Use this swapdev's extent info to locate the (PAGE_SIZE) block which
963  * corresponds to page offset `offset'.
964  */
965 sector_t map_swap_page(struct swap_info_struct *sis, pgoff_t offset)
966 {
967 	struct swap_extent *se = sis->curr_swap_extent;
968 	struct swap_extent *start_se = se;
969 
970 	for ( ; ; ) {
971 		struct list_head *lh;
972 
973 		if (se->start_page <= offset &&
974 				offset < (se->start_page + se->nr_pages)) {
975 			return se->start_block + (offset - se->start_page);
976 		}
977 		lh = se->list.next;
978 		if (lh == &sis->extent_list)
979 			lh = lh->next;
980 		se = list_entry(lh, struct swap_extent, list);
981 		sis->curr_swap_extent = se;
982 		BUG_ON(se == start_se);		/* It *must* be present */
983 	}
984 }
985 
986 #ifdef CONFIG_HIBERNATION
987 /*
988  * Get the (PAGE_SIZE) block corresponding to given offset on the swapdev
989  * corresponding to given index in swap_info (swap type).
990  */
991 sector_t swapdev_block(int swap_type, pgoff_t offset)
992 {
993 	struct swap_info_struct *sis;
994 
995 	if (swap_type >= nr_swapfiles)
996 		return 0;
997 
998 	sis = swap_info + swap_type;
999 	return (sis->flags & SWP_WRITEOK) ? map_swap_page(sis, offset) : 0;
1000 }
1001 #endif /* CONFIG_HIBERNATION */
1002 
1003 /*
1004  * Free all of a swapdev's extent information
1005  */
1006 static void destroy_swap_extents(struct swap_info_struct *sis)
1007 {
1008 	while (!list_empty(&sis->extent_list)) {
1009 		struct swap_extent *se;
1010 
1011 		se = list_entry(sis->extent_list.next,
1012 				struct swap_extent, list);
1013 		list_del(&se->list);
1014 		kfree(se);
1015 	}
1016 }
1017 
1018 /*
1019  * Add a block range (and the corresponding page range) into this swapdev's
1020  * extent list.  The extent list is kept sorted in page order.
1021  *
1022  * This function rather assumes that it is called in ascending page order.
1023  */
1024 static int
1025 add_swap_extent(struct swap_info_struct *sis, unsigned long start_page,
1026 		unsigned long nr_pages, sector_t start_block)
1027 {
1028 	struct swap_extent *se;
1029 	struct swap_extent *new_se;
1030 	struct list_head *lh;
1031 
1032 	lh = sis->extent_list.prev;	/* The highest page extent */
1033 	if (lh != &sis->extent_list) {
1034 		se = list_entry(lh, struct swap_extent, list);
1035 		BUG_ON(se->start_page + se->nr_pages != start_page);
1036 		if (se->start_block + se->nr_pages == start_block) {
1037 			/* Merge it */
1038 			se->nr_pages += nr_pages;
1039 			return 0;
1040 		}
1041 	}
1042 
1043 	/*
1044 	 * No merge.  Insert a new extent, preserving ordering.
1045 	 */
1046 	new_se = kmalloc(sizeof(*se), GFP_KERNEL);
1047 	if (new_se == NULL)
1048 		return -ENOMEM;
1049 	new_se->start_page = start_page;
1050 	new_se->nr_pages = nr_pages;
1051 	new_se->start_block = start_block;
1052 
1053 	list_add_tail(&new_se->list, &sis->extent_list);
1054 	return 1;
1055 }
1056 
1057 /*
1058  * A `swap extent' is a simple thing which maps a contiguous range of pages
1059  * onto a contiguous range of disk blocks.  An ordered list of swap extents
1060  * is built at swapon time and is then used at swap_writepage/swap_readpage
1061  * time for locating where on disk a page belongs.
1062  *
1063  * If the swapfile is an S_ISBLK block device, a single extent is installed.
1064  * This is done so that the main operating code can treat S_ISBLK and S_ISREG
1065  * swap files identically.
1066  *
1067  * Whether the swapdev is an S_ISREG file or an S_ISBLK blockdev, the swap
1068  * extent list operates in PAGE_SIZE disk blocks.  Both S_ISREG and S_ISBLK
1069  * swapfiles are handled *identically* after swapon time.
1070  *
1071  * For S_ISREG swapfiles, setup_swap_extents() will walk all the file's blocks
1072  * and will parse them into an ordered extent list, in PAGE_SIZE chunks.  If
1073  * some stray blocks are found which do not fall within the PAGE_SIZE alignment
1074  * requirements, they are simply tossed out - we will never use those blocks
1075  * for swapping.
1076  *
1077  * For S_ISREG swapfiles we set S_SWAPFILE across the life of the swapon.  This
1078  * prevents root from shooting her foot off by ftruncating an in-use swapfile,
1079  * which will scribble on the fs.
1080  *
1081  * The amount of disk space which a single swap extent represents varies.
1082  * Typically it is in the 1-4 megabyte range.  So we can have hundreds of
1083  * extents in the list.  To avoid much list walking, we cache the previous
1084  * search location in `curr_swap_extent', and start new searches from there.
1085  * This is extremely effective.  The average number of iterations in
1086  * map_swap_page() has been measured at about 0.3 per page.  - akpm.
1087  */
1088 static int setup_swap_extents(struct swap_info_struct *sis, sector_t *span)
1089 {
1090 	struct inode *inode;
1091 	unsigned blocks_per_page;
1092 	unsigned long page_no;
1093 	unsigned blkbits;
1094 	sector_t probe_block;
1095 	sector_t last_block;
1096 	sector_t lowest_block = -1;
1097 	sector_t highest_block = 0;
1098 	int nr_extents = 0;
1099 	int ret;
1100 
1101 	inode = sis->swap_file->f_mapping->host;
1102 	if (S_ISBLK(inode->i_mode)) {
1103 		ret = add_swap_extent(sis, 0, sis->max, 0);
1104 		*span = sis->pages;
1105 		goto done;
1106 	}
1107 
1108 	blkbits = inode->i_blkbits;
1109 	blocks_per_page = PAGE_SIZE >> blkbits;
1110 
1111 	/*
1112 	 * Map all the blocks into the extent list.  This code doesn't try
1113 	 * to be very smart.
1114 	 */
1115 	probe_block = 0;
1116 	page_no = 0;
1117 	last_block = i_size_read(inode) >> blkbits;
1118 	while ((probe_block + blocks_per_page) <= last_block &&
1119 			page_no < sis->max) {
1120 		unsigned block_in_page;
1121 		sector_t first_block;
1122 
1123 		first_block = bmap(inode, probe_block);
1124 		if (first_block == 0)
1125 			goto bad_bmap;
1126 
1127 		/*
1128 		 * It must be PAGE_SIZE aligned on-disk
1129 		 */
1130 		if (first_block & (blocks_per_page - 1)) {
1131 			probe_block++;
1132 			goto reprobe;
1133 		}
1134 
1135 		for (block_in_page = 1; block_in_page < blocks_per_page;
1136 					block_in_page++) {
1137 			sector_t block;
1138 
1139 			block = bmap(inode, probe_block + block_in_page);
1140 			if (block == 0)
1141 				goto bad_bmap;
1142 			if (block != first_block + block_in_page) {
1143 				/* Discontiguity */
1144 				probe_block++;
1145 				goto reprobe;
1146 			}
1147 		}
1148 
1149 		first_block >>= (PAGE_SHIFT - blkbits);
1150 		if (page_no) {	/* exclude the header page */
1151 			if (first_block < lowest_block)
1152 				lowest_block = first_block;
1153 			if (first_block > highest_block)
1154 				highest_block = first_block;
1155 		}
1156 
1157 		/*
1158 		 * We found a PAGE_SIZE-length, PAGE_SIZE-aligned run of blocks
1159 		 */
1160 		ret = add_swap_extent(sis, page_no, 1, first_block);
1161 		if (ret < 0)
1162 			goto out;
1163 		nr_extents += ret;
1164 		page_no++;
1165 		probe_block += blocks_per_page;
1166 reprobe:
1167 		continue;
1168 	}
1169 	ret = nr_extents;
1170 	*span = 1 + highest_block - lowest_block;
1171 	if (page_no == 0)
1172 		page_no = 1;	/* force Empty message */
1173 	sis->max = page_no;
1174 	sis->pages = page_no - 1;
1175 	sis->highest_bit = page_no - 1;
1176 done:
1177 	sis->curr_swap_extent = list_entry(sis->extent_list.prev,
1178 					struct swap_extent, list);
1179 	goto out;
1180 bad_bmap:
1181 	printk(KERN_ERR "swapon: swapfile has holes\n");
1182 	ret = -EINVAL;
1183 out:
1184 	return ret;
1185 }
1186 
1187 #if 0	/* We don't need this yet */
1188 #include <linux/backing-dev.h>
1189 int page_queue_congested(struct page *page)
1190 {
1191 	struct backing_dev_info *bdi;
1192 
1193 	BUG_ON(!PageLocked(page));	/* It pins the swap_info_struct */
1194 
1195 	if (PageSwapCache(page)) {
1196 		swp_entry_t entry = { .val = page_private(page) };
1197 		struct swap_info_struct *sis;
1198 
1199 		sis = get_swap_info_struct(swp_type(entry));
1200 		bdi = sis->bdev->bd_inode->i_mapping->backing_dev_info;
1201 	} else
1202 		bdi = page->mapping->backing_dev_info;
1203 	return bdi_write_congested(bdi);
1204 }
1205 #endif
1206 
1207 asmlinkage long sys_swapoff(const char __user * specialfile)
1208 {
1209 	struct swap_info_struct * p = NULL;
1210 	unsigned short *swap_map;
1211 	struct file *swap_file, *victim;
1212 	struct address_space *mapping;
1213 	struct inode *inode;
1214 	char * pathname;
1215 	int i, type, prev;
1216 	int err;
1217 
1218 	if (!capable(CAP_SYS_ADMIN))
1219 		return -EPERM;
1220 
1221 	pathname = getname(specialfile);
1222 	err = PTR_ERR(pathname);
1223 	if (IS_ERR(pathname))
1224 		goto out;
1225 
1226 	victim = filp_open(pathname, O_RDWR|O_LARGEFILE, 0);
1227 	putname(pathname);
1228 	err = PTR_ERR(victim);
1229 	if (IS_ERR(victim))
1230 		goto out;
1231 
1232 	mapping = victim->f_mapping;
1233 	prev = -1;
1234 	spin_lock(&swap_lock);
1235 	for (type = swap_list.head; type >= 0; type = swap_info[type].next) {
1236 		p = swap_info + type;
1237 		if ((p->flags & SWP_ACTIVE) == SWP_ACTIVE) {
1238 			if (p->swap_file->f_mapping == mapping)
1239 				break;
1240 		}
1241 		prev = type;
1242 	}
1243 	if (type < 0) {
1244 		err = -EINVAL;
1245 		spin_unlock(&swap_lock);
1246 		goto out_dput;
1247 	}
1248 	if (!security_vm_enough_memory(p->pages))
1249 		vm_unacct_memory(p->pages);
1250 	else {
1251 		err = -ENOMEM;
1252 		spin_unlock(&swap_lock);
1253 		goto out_dput;
1254 	}
1255 	if (prev < 0) {
1256 		swap_list.head = p->next;
1257 	} else {
1258 		swap_info[prev].next = p->next;
1259 	}
1260 	if (type == swap_list.next) {
1261 		/* just pick something that's safe... */
1262 		swap_list.next = swap_list.head;
1263 	}
1264 	if (p->prio < 0) {
1265 		for (i = p->next; i >= 0; i = swap_info[i].next)
1266 			swap_info[i].prio = p->prio--;
1267 		least_priority++;
1268 	}
1269 	nr_swap_pages -= p->pages;
1270 	total_swap_pages -= p->pages;
1271 	p->flags &= ~SWP_WRITEOK;
1272 	spin_unlock(&swap_lock);
1273 
1274 	current->flags |= PF_SWAPOFF;
1275 	err = try_to_unuse(type);
1276 	current->flags &= ~PF_SWAPOFF;
1277 
1278 	if (err) {
1279 		/* re-insert swap space back into swap_list */
1280 		spin_lock(&swap_lock);
1281 		if (p->prio < 0)
1282 			p->prio = --least_priority;
1283 		prev = -1;
1284 		for (i = swap_list.head; i >= 0; i = swap_info[i].next) {
1285 			if (p->prio >= swap_info[i].prio)
1286 				break;
1287 			prev = i;
1288 		}
1289 		p->next = i;
1290 		if (prev < 0)
1291 			swap_list.head = swap_list.next = p - swap_info;
1292 		else
1293 			swap_info[prev].next = p - swap_info;
1294 		nr_swap_pages += p->pages;
1295 		total_swap_pages += p->pages;
1296 		p->flags |= SWP_WRITEOK;
1297 		spin_unlock(&swap_lock);
1298 		goto out_dput;
1299 	}
1300 
1301 	/* wait for any unplug function to finish */
1302 	down_write(&swap_unplug_sem);
1303 	up_write(&swap_unplug_sem);
1304 
1305 	destroy_swap_extents(p);
1306 	mutex_lock(&swapon_mutex);
1307 	spin_lock(&swap_lock);
1308 	drain_mmlist();
1309 
1310 	/* wait for anyone still in scan_swap_map */
1311 	p->highest_bit = 0;		/* cuts scans short */
1312 	while (p->flags >= SWP_SCANNING) {
1313 		spin_unlock(&swap_lock);
1314 		schedule_timeout_uninterruptible(1);
1315 		spin_lock(&swap_lock);
1316 	}
1317 
1318 	swap_file = p->swap_file;
1319 	p->swap_file = NULL;
1320 	p->max = 0;
1321 	swap_map = p->swap_map;
1322 	p->swap_map = NULL;
1323 	p->flags = 0;
1324 	spin_unlock(&swap_lock);
1325 	mutex_unlock(&swapon_mutex);
1326 	vfree(swap_map);
1327 	inode = mapping->host;
1328 	if (S_ISBLK(inode->i_mode)) {
1329 		struct block_device *bdev = I_BDEV(inode);
1330 		set_blocksize(bdev, p->old_block_size);
1331 		bd_release(bdev);
1332 	} else {
1333 		mutex_lock(&inode->i_mutex);
1334 		inode->i_flags &= ~S_SWAPFILE;
1335 		mutex_unlock(&inode->i_mutex);
1336 	}
1337 	filp_close(swap_file, NULL);
1338 	err = 0;
1339 
1340 out_dput:
1341 	filp_close(victim, NULL);
1342 out:
1343 	return err;
1344 }
1345 
1346 #ifdef CONFIG_PROC_FS
1347 /* iterator */
1348 static void *swap_start(struct seq_file *swap, loff_t *pos)
1349 {
1350 	struct swap_info_struct *ptr = swap_info;
1351 	int i;
1352 	loff_t l = *pos;
1353 
1354 	mutex_lock(&swapon_mutex);
1355 
1356 	if (!l)
1357 		return SEQ_START_TOKEN;
1358 
1359 	for (i = 0; i < nr_swapfiles; i++, ptr++) {
1360 		if (!(ptr->flags & SWP_USED) || !ptr->swap_map)
1361 			continue;
1362 		if (!--l)
1363 			return ptr;
1364 	}
1365 
1366 	return NULL;
1367 }
1368 
1369 static void *swap_next(struct seq_file *swap, void *v, loff_t *pos)
1370 {
1371 	struct swap_info_struct *ptr;
1372 	struct swap_info_struct *endptr = swap_info + nr_swapfiles;
1373 
1374 	if (v == SEQ_START_TOKEN)
1375 		ptr = swap_info;
1376 	else {
1377 		ptr = v;
1378 		ptr++;
1379 	}
1380 
1381 	for (; ptr < endptr; ptr++) {
1382 		if (!(ptr->flags & SWP_USED) || !ptr->swap_map)
1383 			continue;
1384 		++*pos;
1385 		return ptr;
1386 	}
1387 
1388 	return NULL;
1389 }
1390 
1391 static void swap_stop(struct seq_file *swap, void *v)
1392 {
1393 	mutex_unlock(&swapon_mutex);
1394 }
1395 
1396 static int swap_show(struct seq_file *swap, void *v)
1397 {
1398 	struct swap_info_struct *ptr = v;
1399 	struct file *file;
1400 	int len;
1401 
1402 	if (ptr == SEQ_START_TOKEN) {
1403 		seq_puts(swap,"Filename\t\t\t\tType\t\tSize\tUsed\tPriority\n");
1404 		return 0;
1405 	}
1406 
1407 	file = ptr->swap_file;
1408 	len = seq_path(swap, &file->f_path, " \t\n\\");
1409 	seq_printf(swap, "%*s%s\t%u\t%u\t%d\n",
1410 		       len < 40 ? 40 - len : 1, " ",
1411 		       S_ISBLK(file->f_path.dentry->d_inode->i_mode) ?
1412 				"partition" : "file\t",
1413 		       ptr->pages << (PAGE_SHIFT - 10),
1414 		       ptr->inuse_pages << (PAGE_SHIFT - 10),
1415 		       ptr->prio);
1416 	return 0;
1417 }
1418 
1419 static const struct seq_operations swaps_op = {
1420 	.start =	swap_start,
1421 	.next =		swap_next,
1422 	.stop =		swap_stop,
1423 	.show =		swap_show
1424 };
1425 
1426 static int swaps_open(struct inode *inode, struct file *file)
1427 {
1428 	return seq_open(file, &swaps_op);
1429 }
1430 
1431 static const struct file_operations proc_swaps_operations = {
1432 	.open		= swaps_open,
1433 	.read		= seq_read,
1434 	.llseek		= seq_lseek,
1435 	.release	= seq_release,
1436 };
1437 
1438 static int __init procswaps_init(void)
1439 {
1440 	proc_create("swaps", 0, NULL, &proc_swaps_operations);
1441 	return 0;
1442 }
1443 __initcall(procswaps_init);
1444 #endif /* CONFIG_PROC_FS */
1445 
1446 /*
1447  * Written 01/25/92 by Simmule Turner, heavily changed by Linus.
1448  *
1449  * The swapon system call
1450  */
1451 asmlinkage long sys_swapon(const char __user * specialfile, int swap_flags)
1452 {
1453 	struct swap_info_struct * p;
1454 	char *name = NULL;
1455 	struct block_device *bdev = NULL;
1456 	struct file *swap_file = NULL;
1457 	struct address_space *mapping;
1458 	unsigned int type;
1459 	int i, prev;
1460 	int error;
1461 	union swap_header *swap_header = NULL;
1462 	int swap_header_version;
1463 	unsigned int nr_good_pages = 0;
1464 	int nr_extents = 0;
1465 	sector_t span;
1466 	unsigned long maxpages = 1;
1467 	int swapfilesize;
1468 	unsigned short *swap_map = NULL;
1469 	struct page *page = NULL;
1470 	struct inode *inode = NULL;
1471 	int did_down = 0;
1472 
1473 	if (!capable(CAP_SYS_ADMIN))
1474 		return -EPERM;
1475 	spin_lock(&swap_lock);
1476 	p = swap_info;
1477 	for (type = 0 ; type < nr_swapfiles ; type++,p++)
1478 		if (!(p->flags & SWP_USED))
1479 			break;
1480 	error = -EPERM;
1481 	if (type >= MAX_SWAPFILES) {
1482 		spin_unlock(&swap_lock);
1483 		goto out;
1484 	}
1485 	if (type >= nr_swapfiles)
1486 		nr_swapfiles = type+1;
1487 	memset(p, 0, sizeof(*p));
1488 	INIT_LIST_HEAD(&p->extent_list);
1489 	p->flags = SWP_USED;
1490 	p->next = -1;
1491 	spin_unlock(&swap_lock);
1492 	name = getname(specialfile);
1493 	error = PTR_ERR(name);
1494 	if (IS_ERR(name)) {
1495 		name = NULL;
1496 		goto bad_swap_2;
1497 	}
1498 	swap_file = filp_open(name, O_RDWR|O_LARGEFILE, 0);
1499 	error = PTR_ERR(swap_file);
1500 	if (IS_ERR(swap_file)) {
1501 		swap_file = NULL;
1502 		goto bad_swap_2;
1503 	}
1504 
1505 	p->swap_file = swap_file;
1506 	mapping = swap_file->f_mapping;
1507 	inode = mapping->host;
1508 
1509 	error = -EBUSY;
1510 	for (i = 0; i < nr_swapfiles; i++) {
1511 		struct swap_info_struct *q = &swap_info[i];
1512 
1513 		if (i == type || !q->swap_file)
1514 			continue;
1515 		if (mapping == q->swap_file->f_mapping)
1516 			goto bad_swap;
1517 	}
1518 
1519 	error = -EINVAL;
1520 	if (S_ISBLK(inode->i_mode)) {
1521 		bdev = I_BDEV(inode);
1522 		error = bd_claim(bdev, sys_swapon);
1523 		if (error < 0) {
1524 			bdev = NULL;
1525 			error = -EINVAL;
1526 			goto bad_swap;
1527 		}
1528 		p->old_block_size = block_size(bdev);
1529 		error = set_blocksize(bdev, PAGE_SIZE);
1530 		if (error < 0)
1531 			goto bad_swap;
1532 		p->bdev = bdev;
1533 	} else if (S_ISREG(inode->i_mode)) {
1534 		p->bdev = inode->i_sb->s_bdev;
1535 		mutex_lock(&inode->i_mutex);
1536 		did_down = 1;
1537 		if (IS_SWAPFILE(inode)) {
1538 			error = -EBUSY;
1539 			goto bad_swap;
1540 		}
1541 	} else {
1542 		goto bad_swap;
1543 	}
1544 
1545 	swapfilesize = i_size_read(inode) >> PAGE_SHIFT;
1546 
1547 	/*
1548 	 * Read the swap header.
1549 	 */
1550 	if (!mapping->a_ops->readpage) {
1551 		error = -EINVAL;
1552 		goto bad_swap;
1553 	}
1554 	page = read_mapping_page(mapping, 0, swap_file);
1555 	if (IS_ERR(page)) {
1556 		error = PTR_ERR(page);
1557 		goto bad_swap;
1558 	}
1559 	kmap(page);
1560 	swap_header = page_address(page);
1561 
1562 	if (!memcmp("SWAP-SPACE",swap_header->magic.magic,10))
1563 		swap_header_version = 1;
1564 	else if (!memcmp("SWAPSPACE2",swap_header->magic.magic,10))
1565 		swap_header_version = 2;
1566 	else {
1567 		printk(KERN_ERR "Unable to find swap-space signature\n");
1568 		error = -EINVAL;
1569 		goto bad_swap;
1570 	}
1571 
1572 	switch (swap_header_version) {
1573 	case 1:
1574 		printk(KERN_ERR "version 0 swap is no longer supported. "
1575 			"Use mkswap -v1 %s\n", name);
1576 		error = -EINVAL;
1577 		goto bad_swap;
1578 	case 2:
1579 		/* swap partition endianess hack... */
1580 		if (swab32(swap_header->info.version) == 1) {
1581 			swab32s(&swap_header->info.version);
1582 			swab32s(&swap_header->info.last_page);
1583 			swab32s(&swap_header->info.nr_badpages);
1584 			for (i = 0; i < swap_header->info.nr_badpages; i++)
1585 				swab32s(&swap_header->info.badpages[i]);
1586 		}
1587 		/* Check the swap header's sub-version and the size of
1588                    the swap file and bad block lists */
1589 		if (swap_header->info.version != 1) {
1590 			printk(KERN_WARNING
1591 			       "Unable to handle swap header version %d\n",
1592 			       swap_header->info.version);
1593 			error = -EINVAL;
1594 			goto bad_swap;
1595 		}
1596 
1597 		p->lowest_bit  = 1;
1598 		p->cluster_next = 1;
1599 
1600 		/*
1601 		 * Find out how many pages are allowed for a single swap
1602 		 * device. There are two limiting factors: 1) the number of
1603 		 * bits for the swap offset in the swp_entry_t type and
1604 		 * 2) the number of bits in the a swap pte as defined by
1605 		 * the different architectures. In order to find the
1606 		 * largest possible bit mask a swap entry with swap type 0
1607 		 * and swap offset ~0UL is created, encoded to a swap pte,
1608 		 * decoded to a swp_entry_t again and finally the swap
1609 		 * offset is extracted. This will mask all the bits from
1610 		 * the initial ~0UL mask that can't be encoded in either
1611 		 * the swp_entry_t or the architecture definition of a
1612 		 * swap pte.
1613 		 */
1614 		maxpages = swp_offset(pte_to_swp_entry(swp_entry_to_pte(swp_entry(0,~0UL)))) - 1;
1615 		if (maxpages > swap_header->info.last_page)
1616 			maxpages = swap_header->info.last_page;
1617 		p->highest_bit = maxpages - 1;
1618 
1619 		error = -EINVAL;
1620 		if (!maxpages)
1621 			goto bad_swap;
1622 		if (swapfilesize && maxpages > swapfilesize) {
1623 			printk(KERN_WARNING
1624 			       "Swap area shorter than signature indicates\n");
1625 			goto bad_swap;
1626 		}
1627 		if (swap_header->info.nr_badpages && S_ISREG(inode->i_mode))
1628 			goto bad_swap;
1629 		if (swap_header->info.nr_badpages > MAX_SWAP_BADPAGES)
1630 			goto bad_swap;
1631 
1632 		/* OK, set up the swap map and apply the bad block list */
1633 		swap_map = vmalloc(maxpages * sizeof(short));
1634 		if (!swap_map) {
1635 			error = -ENOMEM;
1636 			goto bad_swap;
1637 		}
1638 
1639 		error = 0;
1640 		memset(swap_map, 0, maxpages * sizeof(short));
1641 		for (i = 0; i < swap_header->info.nr_badpages; i++) {
1642 			int page_nr = swap_header->info.badpages[i];
1643 			if (page_nr <= 0 || page_nr >= swap_header->info.last_page)
1644 				error = -EINVAL;
1645 			else
1646 				swap_map[page_nr] = SWAP_MAP_BAD;
1647 		}
1648 		nr_good_pages = swap_header->info.last_page -
1649 				swap_header->info.nr_badpages -
1650 				1 /* header page */;
1651 		if (error)
1652 			goto bad_swap;
1653 	}
1654 
1655 	if (nr_good_pages) {
1656 		swap_map[0] = SWAP_MAP_BAD;
1657 		p->max = maxpages;
1658 		p->pages = nr_good_pages;
1659 		nr_extents = setup_swap_extents(p, &span);
1660 		if (nr_extents < 0) {
1661 			error = nr_extents;
1662 			goto bad_swap;
1663 		}
1664 		nr_good_pages = p->pages;
1665 	}
1666 	if (!nr_good_pages) {
1667 		printk(KERN_WARNING "Empty swap-file\n");
1668 		error = -EINVAL;
1669 		goto bad_swap;
1670 	}
1671 
1672 	mutex_lock(&swapon_mutex);
1673 	spin_lock(&swap_lock);
1674 	if (swap_flags & SWAP_FLAG_PREFER)
1675 		p->prio =
1676 		  (swap_flags & SWAP_FLAG_PRIO_MASK) >> SWAP_FLAG_PRIO_SHIFT;
1677 	else
1678 		p->prio = --least_priority;
1679 	p->swap_map = swap_map;
1680 	p->flags = SWP_ACTIVE;
1681 	nr_swap_pages += nr_good_pages;
1682 	total_swap_pages += nr_good_pages;
1683 
1684 	printk(KERN_INFO "Adding %uk swap on %s.  "
1685 			"Priority:%d extents:%d across:%lluk\n",
1686 		nr_good_pages<<(PAGE_SHIFT-10), name, p->prio,
1687 		nr_extents, (unsigned long long)span<<(PAGE_SHIFT-10));
1688 
1689 	/* insert swap space into swap_list: */
1690 	prev = -1;
1691 	for (i = swap_list.head; i >= 0; i = swap_info[i].next) {
1692 		if (p->prio >= swap_info[i].prio) {
1693 			break;
1694 		}
1695 		prev = i;
1696 	}
1697 	p->next = i;
1698 	if (prev < 0) {
1699 		swap_list.head = swap_list.next = p - swap_info;
1700 	} else {
1701 		swap_info[prev].next = p - swap_info;
1702 	}
1703 	spin_unlock(&swap_lock);
1704 	mutex_unlock(&swapon_mutex);
1705 	error = 0;
1706 	goto out;
1707 bad_swap:
1708 	if (bdev) {
1709 		set_blocksize(bdev, p->old_block_size);
1710 		bd_release(bdev);
1711 	}
1712 	destroy_swap_extents(p);
1713 bad_swap_2:
1714 	spin_lock(&swap_lock);
1715 	p->swap_file = NULL;
1716 	p->flags = 0;
1717 	spin_unlock(&swap_lock);
1718 	vfree(swap_map);
1719 	if (swap_file)
1720 		filp_close(swap_file, NULL);
1721 out:
1722 	if (page && !IS_ERR(page)) {
1723 		kunmap(page);
1724 		page_cache_release(page);
1725 	}
1726 	if (name)
1727 		putname(name);
1728 	if (did_down) {
1729 		if (!error)
1730 			inode->i_flags |= S_SWAPFILE;
1731 		mutex_unlock(&inode->i_mutex);
1732 	}
1733 	return error;
1734 }
1735 
1736 void si_swapinfo(struct sysinfo *val)
1737 {
1738 	unsigned int i;
1739 	unsigned long nr_to_be_unused = 0;
1740 
1741 	spin_lock(&swap_lock);
1742 	for (i = 0; i < nr_swapfiles; i++) {
1743 		if (!(swap_info[i].flags & SWP_USED) ||
1744 		     (swap_info[i].flags & SWP_WRITEOK))
1745 			continue;
1746 		nr_to_be_unused += swap_info[i].inuse_pages;
1747 	}
1748 	val->freeswap = nr_swap_pages + nr_to_be_unused;
1749 	val->totalswap = total_swap_pages + nr_to_be_unused;
1750 	spin_unlock(&swap_lock);
1751 }
1752 
1753 /*
1754  * Verify that a swap entry is valid and increment its swap map count.
1755  *
1756  * Note: if swap_map[] reaches SWAP_MAP_MAX the entries are treated as
1757  * "permanent", but will be reclaimed by the next swapoff.
1758  */
1759 int swap_duplicate(swp_entry_t entry)
1760 {
1761 	struct swap_info_struct * p;
1762 	unsigned long offset, type;
1763 	int result = 0;
1764 
1765 	if (is_migration_entry(entry))
1766 		return 1;
1767 
1768 	type = swp_type(entry);
1769 	if (type >= nr_swapfiles)
1770 		goto bad_file;
1771 	p = type + swap_info;
1772 	offset = swp_offset(entry);
1773 
1774 	spin_lock(&swap_lock);
1775 	if (offset < p->max && p->swap_map[offset]) {
1776 		if (p->swap_map[offset] < SWAP_MAP_MAX - 1) {
1777 			p->swap_map[offset]++;
1778 			result = 1;
1779 		} else if (p->swap_map[offset] <= SWAP_MAP_MAX) {
1780 			if (swap_overflow++ < 5)
1781 				printk(KERN_WARNING "swap_dup: swap entry overflow\n");
1782 			p->swap_map[offset] = SWAP_MAP_MAX;
1783 			result = 1;
1784 		}
1785 	}
1786 	spin_unlock(&swap_lock);
1787 out:
1788 	return result;
1789 
1790 bad_file:
1791 	printk(KERN_ERR "swap_dup: %s%08lx\n", Bad_file, entry.val);
1792 	goto out;
1793 }
1794 
1795 struct swap_info_struct *
1796 get_swap_info_struct(unsigned type)
1797 {
1798 	return &swap_info[type];
1799 }
1800 
1801 /*
1802  * swap_lock prevents swap_map being freed. Don't grab an extra
1803  * reference on the swaphandle, it doesn't matter if it becomes unused.
1804  */
1805 int valid_swaphandles(swp_entry_t entry, unsigned long *offset)
1806 {
1807 	struct swap_info_struct *si;
1808 	int our_page_cluster = page_cluster;
1809 	pgoff_t target, toff;
1810 	pgoff_t base, end;
1811 	int nr_pages = 0;
1812 
1813 	if (!our_page_cluster)	/* no readahead */
1814 		return 0;
1815 
1816 	si = &swap_info[swp_type(entry)];
1817 	target = swp_offset(entry);
1818 	base = (target >> our_page_cluster) << our_page_cluster;
1819 	end = base + (1 << our_page_cluster);
1820 	if (!base)		/* first page is swap header */
1821 		base++;
1822 
1823 	spin_lock(&swap_lock);
1824 	if (end > si->max)	/* don't go beyond end of map */
1825 		end = si->max;
1826 
1827 	/* Count contiguous allocated slots above our target */
1828 	for (toff = target; ++toff < end; nr_pages++) {
1829 		/* Don't read in free or bad pages */
1830 		if (!si->swap_map[toff])
1831 			break;
1832 		if (si->swap_map[toff] == SWAP_MAP_BAD)
1833 			break;
1834 	}
1835 	/* Count contiguous allocated slots below our target */
1836 	for (toff = target; --toff >= base; nr_pages++) {
1837 		/* Don't read in free or bad pages */
1838 		if (!si->swap_map[toff])
1839 			break;
1840 		if (si->swap_map[toff] == SWAP_MAP_BAD)
1841 			break;
1842 	}
1843 	spin_unlock(&swap_lock);
1844 
1845 	/*
1846 	 * Indicate starting offset, and return number of pages to get:
1847 	 * if only 1, say 0, since there's then no readahead to be done.
1848 	 */
1849 	*offset = ++toff;
1850 	return nr_pages? ++nr_pages: 0;
1851 }
1852