mm: Add folio_evictable()
This is the folio equivalent of page_evictable(). Unfortunately, it's different from !folio_test_unevictable(), but I think it's used in places where you have to be a VM expert and can reasonably be expected to know the difference. Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Reviewed-by: Christoph Hellwig <hch@lst.de> Acked-by: Vlastimil Babka <vbabka@suse.cz>
This commit is contained in:
Родитель
0995d7e568
Коммит
3eed3ef55c
|
@ -72,17 +72,28 @@ unsigned find_lock_entries(struct address_space *mapping, pgoff_t start,
|
||||||
pgoff_t end, struct pagevec *pvec, pgoff_t *indices);
|
pgoff_t end, struct pagevec *pvec, pgoff_t *indices);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* page_evictable - test whether a page is evictable
|
* folio_evictable - Test whether a folio is evictable.
|
||||||
* @page: the page to test
|
* @folio: The folio to test.
|
||||||
*
|
*
|
||||||
* Test whether page is evictable--i.e., should be placed on active/inactive
|
* Test whether @folio is evictable -- i.e., should be placed on
|
||||||
* lists vs unevictable list.
|
* active/inactive lists vs unevictable list.
|
||||||
*
|
|
||||||
* Reasons page might not be evictable:
|
|
||||||
* (1) page's mapping marked unevictable
|
|
||||||
* (2) page is part of an mlocked VMA
|
|
||||||
*
|
*
|
||||||
|
* Reasons folio might not be evictable:
|
||||||
|
* 1. folio's mapping marked unevictable
|
||||||
|
* 2. One of the pages in the folio is part of an mlocked VMA
|
||||||
*/
|
*/
|
||||||
|
static inline bool folio_evictable(struct folio *folio)
|
||||||
|
{
|
||||||
|
bool ret;
|
||||||
|
|
||||||
|
/* Prevent address_space of inode and swap cache from being freed */
|
||||||
|
rcu_read_lock();
|
||||||
|
ret = !mapping_unevictable(folio_mapping(folio)) &&
|
||||||
|
!folio_test_mlocked(folio);
|
||||||
|
rcu_read_unlock();
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static inline bool page_evictable(struct page *page)
|
static inline bool page_evictable(struct page *page)
|
||||||
{
|
{
|
||||||
bool ret;
|
bool ret;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче