Files
Linux/include/linux/swapfile.h
T
Dan Magenheimer 38b5faf4b1 mm: frontswap: core swap subsystem hooks and headers
This patch, 2of4, contains the changes to the core swap subsystem.
This includes:

(1) makes available core swap data structures (swap_lock, swap_list and
swap_info) that are needed by frontswap.c but we don't need to expose them
to the dozens of files that include swap.h so we create a new swapfile.h
just to extern-ify these and modify their declarations to non-static

(2) adds frontswap-related elements to swap_info_struct.  Frontswap_map
points to vzalloc'ed one-bit-per-swap-page metadata that indicates
whether the swap page is in frontswap or in the device and frontswap_pages
counts how many pages are in frontswap.

(3) adds hooks in the swap subsystem and extends try_to_unuse so that
frontswap_shrink can do a "partial swapoff".

Note that a failed frontswap_map allocation is safe... failure is noted
by lack of "FS" in the subsequent printk.

---

[v14: rebase to 3.4-rc2]
[v10: no change]
[v9: [email protected]: mark some statics __read_mostly]
[v9: [email protected]: add clarifying comments]
[v9: [email protected]: no need to loop repeating try_to_unuse]
[v9: [email protected]: remove superfluous check for NULL]
[v8: rebase to 3.0-rc4]
[v8: [email protected]: change counter to atomic_t to avoid races]
[v8: [email protected]: comment to clarify informational counters]
[v7: rebase to 3.0-rc3]
[v7: [email protected]: add new swap struct elements only if config'd]
[v6: rebase to 3.0-rc1]
[v6: [email protected]: fix null pointer deref if vzalloc fails]
[v6: [email protected]: various checks and code clarifications/comments]
[v5: no change from v4]
[v4: rebase to 2.6.39]
Signed-off-by: Dan Magenheimer <[email protected]>
Reviewed-by: Kamezawa Hiroyuki <[email protected]>
Acked-by: Jan Beulich <[email protected]>
Acked-by: Seth Jennings <[email protected]>
Cc: Jeremy Fitzhardinge <[email protected]>
Cc: Hugh Dickins <[email protected]>
Cc: Johannes Weiner <[email protected]>
Cc: Nitin Gupta <[email protected]>
Cc: Matthew Wilcox <[email protected]>
Cc: Chris Mason <[email protected]>
Cc: Rik Riel <[email protected]>
Cc: Andrew Morton <[email protected]>
[v11: Rebased, fixed mm/swapfile.c context change]
Signed-off-by: Konrad Rzeszutek Wilk <[email protected]>
2012-05-15 11:33:58 -04:00

14 lines
411 B
C

#ifndef _LINUX_SWAPFILE_H
#define _LINUX_SWAPFILE_H
/*
* these were static in swapfile.c but frontswap.c needs them and we don't
* want to expose them to the dozens of source files that include swap.h
*/
extern spinlock_t swap_lock;
extern struct swap_list_t swap_list;
extern struct swap_info_struct *swap_info[];
extern int try_to_unuse(unsigned int, bool, unsigned long);
#endif /* _LINUX_SWAPFILE_H */