diff options
Diffstat (limited to 'include/linux/swap.h')
| -rw-r--r-- | include/linux/swap.h | 23 | 
1 files changed, 20 insertions, 3 deletions
diff --git a/include/linux/swap.h b/include/linux/swap.h index 38874729dc5f..7ba7dccaf0e7 100644 --- a/include/linux/swap.h +++ b/include/linux/swap.h @@ -351,7 +351,15 @@ extern void check_move_unevictable_pages(struct page **, int nr_pages);  extern int kswapd_run(int nid);  extern void kswapd_stop(int nid);  #ifdef CONFIG_MEMCG -extern int mem_cgroup_swappiness(struct mem_cgroup *mem); +static inline int mem_cgroup_swappiness(struct mem_cgroup *memcg) +{ +	/* root ? */ +	if (mem_cgroup_disabled() || !memcg->css.parent) +		return vm_swappiness; + +	return memcg->swappiness; +} +  #else  static inline int mem_cgroup_swappiness(struct mem_cgroup *mem)  { @@ -373,9 +381,9 @@ static inline void mem_cgroup_uncharge_swap(swp_entry_t entry)  /* linux/mm/page_io.c */  extern int swap_readpage(struct page *);  extern int swap_writepage(struct page *page, struct writeback_control *wbc); -extern void end_swap_bio_write(struct bio *bio, int err); +extern void end_swap_bio_write(struct bio *bio);  extern int __swap_writepage(struct page *page, struct writeback_control *wbc, -	void (*end_write_func)(struct bio *, int)); +	bio_end_io_t end_write_func);  extern int swap_set_page_dirty(struct page *page);  int add_swap_extent(struct swap_info_struct *sis, unsigned long start_page, @@ -398,6 +406,9 @@ extern void free_pages_and_swap_cache(struct page **, int);  extern struct page *lookup_swap_cache(swp_entry_t);  extern struct page *read_swap_cache_async(swp_entry_t, gfp_t,  			struct vm_area_struct *vma, unsigned long addr); +extern struct page *__read_swap_cache_async(swp_entry_t, gfp_t, +			struct vm_area_struct *vma, unsigned long addr, +			bool *new_page_allocated);  extern struct page *swapin_readahead(swp_entry_t, gfp_t,  			struct vm_area_struct *vma, unsigned long addr); @@ -431,6 +442,7 @@ extern unsigned int count_swap_pages(int, int);  extern sector_t map_swap_page(struct page *, struct block_device **);  extern sector_t swapdev_block(int, pgoff_t);  extern int page_swapcount(struct page *); +extern int swp_swapcount(swp_entry_t entry);  extern struct swap_info_struct *page_swap_info(struct page *);  extern int reuse_swap_page(struct page *);  extern int try_to_free_swap(struct page *); @@ -522,6 +534,11 @@ static inline int page_swapcount(struct page *page)  	return 0;  } +static inline int swp_swapcount(swp_entry_t entry) +{ +	return 0; +} +  #define reuse_swap_page(page)	(page_mapcount(page) == 1)  static inline int try_to_free_swap(struct page *page)  |