]>
git.ipfire.org Git - thirdparty/linux.git/blob - mm/swap.h
1 /* SPDX-License-Identifier: GPL-2.0 */
6 #include <linux/blk_types.h> /* for bio_end_io_t */
8 /* linux/mm/page_io.c */
9 int sio_pool_init(void);
11 void swap_readpage(struct page
*page
, bool do_poll
, struct swap_iocb
**plug
);
12 void __swap_read_unplug(struct swap_iocb
*plug
);
13 static inline void swap_read_unplug(struct swap_iocb
*plug
)
16 __swap_read_unplug(plug
);
18 void swap_write_unplug(struct swap_iocb
*sio
);
19 int swap_writepage(struct page
*page
, struct writeback_control
*wbc
);
20 void __swap_writepage(struct page
*page
, struct writeback_control
*wbc
);
22 /* linux/mm/swap_state.c */
23 /* One swap address space for each 64M swap space */
24 #define SWAP_ADDRESS_SPACE_SHIFT 14
25 #define SWAP_ADDRESS_SPACE_PAGES (1 << SWAP_ADDRESS_SPACE_SHIFT)
26 extern struct address_space
*swapper_spaces
[];
27 #define swap_address_space(entry) \
28 (&swapper_spaces[swp_type(entry)][swp_offset(entry) \
29 >> SWAP_ADDRESS_SPACE_SHIFT])
31 void show_swap_cache_info(void);
32 bool add_to_swap(struct folio
*folio
);
33 void *get_shadow_from_swap_cache(swp_entry_t entry
);
34 int add_to_swap_cache(struct folio
*folio
, swp_entry_t entry
,
35 gfp_t gfp
, void **shadowp
);
36 void __delete_from_swap_cache(struct folio
*folio
,
37 swp_entry_t entry
, void *shadow
);
38 void delete_from_swap_cache(struct folio
*folio
);
39 void clear_shadow_from_swap_cache(int type
, unsigned long begin
,
41 struct folio
*swap_cache_get_folio(swp_entry_t entry
,
42 struct vm_area_struct
*vma
, unsigned long addr
);
43 struct folio
*filemap_get_incore_folio(struct address_space
*mapping
,
46 struct page
*read_swap_cache_async(swp_entry_t entry
, gfp_t gfp_mask
,
47 struct vm_area_struct
*vma
,
49 struct swap_iocb
**plug
);
50 struct page
*__read_swap_cache_async(swp_entry_t entry
, gfp_t gfp_mask
,
51 struct vm_area_struct
*vma
,
53 bool *new_page_allocated
);
54 struct page
*swap_cluster_readahead(swp_entry_t entry
, gfp_t flag
,
55 struct vm_fault
*vmf
);
56 struct page
*swapin_readahead(swp_entry_t entry
, gfp_t flag
,
57 struct vm_fault
*vmf
);
59 static inline unsigned int folio_swap_flags(struct folio
*folio
)
61 return page_swap_info(&folio
->page
)->flags
;
63 #else /* CONFIG_SWAP */
65 static inline void swap_readpage(struct page
*page
, bool do_poll
,
66 struct swap_iocb
**plug
)
69 static inline void swap_write_unplug(struct swap_iocb
*sio
)
73 static inline struct address_space
*swap_address_space(swp_entry_t entry
)
78 static inline void show_swap_cache_info(void)
82 static inline struct page
*swap_cluster_readahead(swp_entry_t entry
,
83 gfp_t gfp_mask
, struct vm_fault
*vmf
)
88 static inline struct page
*swapin_readahead(swp_entry_t swp
, gfp_t gfp_mask
,
94 static inline int swap_writepage(struct page
*p
, struct writeback_control
*wbc
)
99 static inline struct folio
*swap_cache_get_folio(swp_entry_t entry
,
100 struct vm_area_struct
*vma
, unsigned long addr
)
106 struct folio
*filemap_get_incore_folio(struct address_space
*mapping
,
109 return filemap_get_folio(mapping
, index
);
112 static inline bool add_to_swap(struct folio
*folio
)
117 static inline void *get_shadow_from_swap_cache(swp_entry_t entry
)
122 static inline int add_to_swap_cache(struct folio
*folio
, swp_entry_t entry
,
123 gfp_t gfp_mask
, void **shadowp
)
128 static inline void __delete_from_swap_cache(struct folio
*folio
,
129 swp_entry_t entry
, void *shadow
)
133 static inline void delete_from_swap_cache(struct folio
*folio
)
137 static inline void clear_shadow_from_swap_cache(int type
, unsigned long begin
,
142 static inline unsigned int folio_swap_flags(struct folio
*folio
)
146 #endif /* CONFIG_SWAP */
147 #endif /* _MM_SWAP_H */