mm: page_alloc: convert hot/cold parameter and immediate callers to bool
cold is a bool, make it one. Make the likely case the "if" part of the block instead of the else as according to the optimisation manual this is preferred. Signed-off-by: Mel Gorman <mgorman@suse.de> Acked-by: Rik van Riel <riel@redhat.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Vlastimil Babka <vbabka@suse.cz> Cc: Jan Kara <jack@suse.cz> Cc: Michal Hocko <mhocko@suse.cz> Cc: Hugh Dickins <hughd@google.com> Cc: Dave Hansen <dave.hansen@intel.com> Cc: Theodore Ts'o <tytso@mit.edu> Cc: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> Cc: Oleg Nesterov <oleg@redhat.com> Cc: Peter Zijlstra <peterz@infradead.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
7aeb09f910
commit
b745bc85f2
|
@ -417,7 +417,7 @@ void __homecache_free_pages(struct page *page, unsigned int order)
|
||||||
if (put_page_testzero(page)) {
|
if (put_page_testzero(page)) {
|
||||||
homecache_change_page_home(page, order, PAGE_HOME_HASH);
|
homecache_change_page_home(page, order, PAGE_HOME_HASH);
|
||||||
if (order == 0) {
|
if (order == 0) {
|
||||||
free_hot_cold_page(page, 0);
|
free_hot_cold_page(page, false);
|
||||||
} else {
|
} else {
|
||||||
init_page_count(page);
|
init_page_count(page);
|
||||||
__free_pages(page, order);
|
__free_pages(page, order);
|
||||||
|
|
|
@ -1614,7 +1614,7 @@ out_finish:
|
||||||
|
|
||||||
static void fuse_retrieve_end(struct fuse_conn *fc, struct fuse_req *req)
|
static void fuse_retrieve_end(struct fuse_conn *fc, struct fuse_req *req)
|
||||||
{
|
{
|
||||||
release_pages(req->pages, req->num_pages, 0);
|
release_pages(req->pages, req->num_pages, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int fuse_retrieve(struct fuse_conn *fc, struct inode *inode,
|
static int fuse_retrieve(struct fuse_conn *fc, struct inode *inode,
|
||||||
|
|
|
@ -371,8 +371,8 @@ void *alloc_pages_exact_nid(int nid, size_t size, gfp_t gfp_mask);
|
||||||
|
|
||||||
extern void __free_pages(struct page *page, unsigned int order);
|
extern void __free_pages(struct page *page, unsigned int order);
|
||||||
extern void free_pages(unsigned long addr, unsigned int order);
|
extern void free_pages(unsigned long addr, unsigned int order);
|
||||||
extern void free_hot_cold_page(struct page *page, int cold);
|
extern void free_hot_cold_page(struct page *page, bool cold);
|
||||||
extern void free_hot_cold_page_list(struct list_head *list, int cold);
|
extern void free_hot_cold_page_list(struct list_head *list, bool cold);
|
||||||
|
|
||||||
extern void __free_kmem_pages(struct page *page, unsigned int order);
|
extern void __free_kmem_pages(struct page *page, unsigned int order);
|
||||||
extern void free_kmem_pages(unsigned long addr, unsigned int order);
|
extern void free_kmem_pages(unsigned long addr, unsigned int order);
|
||||||
|
|
|
@ -110,7 +110,7 @@ static inline void mapping_set_gfp_mask(struct address_space *m, gfp_t mask)
|
||||||
|
|
||||||
#define page_cache_get(page) get_page(page)
|
#define page_cache_get(page) get_page(page)
|
||||||
#define page_cache_release(page) put_page(page)
|
#define page_cache_release(page) put_page(page)
|
||||||
void release_pages(struct page **pages, int nr, int cold);
|
void release_pages(struct page **pages, int nr, bool cold);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* speculatively take a reference to a page.
|
* speculatively take a reference to a page.
|
||||||
|
|
|
@ -477,7 +477,7 @@ mem_cgroup_uncharge_swapcache(struct page *page, swp_entry_t ent, bool swapout)
|
||||||
#define free_page_and_swap_cache(page) \
|
#define free_page_and_swap_cache(page) \
|
||||||
page_cache_release(page)
|
page_cache_release(page)
|
||||||
#define free_pages_and_swap_cache(pages, nr) \
|
#define free_pages_and_swap_cache(pages, nr) \
|
||||||
release_pages((pages), (nr), 0);
|
release_pages((pages), (nr), false);
|
||||||
|
|
||||||
static inline void show_swap_cache_info(void)
|
static inline void show_swap_cache_info(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1199,7 +1199,7 @@ retry_reserve:
|
||||||
*/
|
*/
|
||||||
static int rmqueue_bulk(struct zone *zone, unsigned int order,
|
static int rmqueue_bulk(struct zone *zone, unsigned int order,
|
||||||
unsigned long count, struct list_head *list,
|
unsigned long count, struct list_head *list,
|
||||||
int migratetype, int cold)
|
int migratetype, bool cold)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -1218,7 +1218,7 @@ static int rmqueue_bulk(struct zone *zone, unsigned int order,
|
||||||
* merge IO requests if the physical pages are ordered
|
* merge IO requests if the physical pages are ordered
|
||||||
* properly.
|
* properly.
|
||||||
*/
|
*/
|
||||||
if (likely(cold == 0))
|
if (likely(!cold))
|
||||||
list_add(&page->lru, list);
|
list_add(&page->lru, list);
|
||||||
else
|
else
|
||||||
list_add_tail(&page->lru, list);
|
list_add_tail(&page->lru, list);
|
||||||
|
@ -1379,9 +1379,9 @@ void mark_free_pages(struct zone *zone)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Free a 0-order page
|
* Free a 0-order page
|
||||||
* cold == 1 ? free a cold page : free a hot page
|
* cold == true ? free a cold page : free a hot page
|
||||||
*/
|
*/
|
||||||
void free_hot_cold_page(struct page *page, int cold)
|
void free_hot_cold_page(struct page *page, bool cold)
|
||||||
{
|
{
|
||||||
struct zone *zone = page_zone(page);
|
struct zone *zone = page_zone(page);
|
||||||
struct per_cpu_pages *pcp;
|
struct per_cpu_pages *pcp;
|
||||||
|
@ -1413,10 +1413,10 @@ void free_hot_cold_page(struct page *page, int cold)
|
||||||
}
|
}
|
||||||
|
|
||||||
pcp = &this_cpu_ptr(zone->pageset)->pcp;
|
pcp = &this_cpu_ptr(zone->pageset)->pcp;
|
||||||
if (cold)
|
if (!cold)
|
||||||
list_add_tail(&page->lru, &pcp->lists[migratetype]);
|
|
||||||
else
|
|
||||||
list_add(&page->lru, &pcp->lists[migratetype]);
|
list_add(&page->lru, &pcp->lists[migratetype]);
|
||||||
|
else
|
||||||
|
list_add_tail(&page->lru, &pcp->lists[migratetype]);
|
||||||
pcp->count++;
|
pcp->count++;
|
||||||
if (pcp->count >= pcp->high) {
|
if (pcp->count >= pcp->high) {
|
||||||
unsigned long batch = ACCESS_ONCE(pcp->batch);
|
unsigned long batch = ACCESS_ONCE(pcp->batch);
|
||||||
|
@ -1431,7 +1431,7 @@ out:
|
||||||
/*
|
/*
|
||||||
* Free a list of 0-order pages
|
* Free a list of 0-order pages
|
||||||
*/
|
*/
|
||||||
void free_hot_cold_page_list(struct list_head *list, int cold)
|
void free_hot_cold_page_list(struct list_head *list, bool cold)
|
||||||
{
|
{
|
||||||
struct page *page, *next;
|
struct page *page, *next;
|
||||||
|
|
||||||
|
@ -1548,7 +1548,7 @@ struct page *buffered_rmqueue(struct zone *preferred_zone,
|
||||||
{
|
{
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
struct page *page;
|
struct page *page;
|
||||||
int cold = !!(gfp_flags & __GFP_COLD);
|
bool cold = ((gfp_flags & __GFP_COLD) != 0);
|
||||||
|
|
||||||
again:
|
again:
|
||||||
if (likely(order == 0)) {
|
if (likely(order == 0)) {
|
||||||
|
@ -2823,7 +2823,7 @@ void __free_pages(struct page *page, unsigned int order)
|
||||||
{
|
{
|
||||||
if (put_page_testzero(page)) {
|
if (put_page_testzero(page)) {
|
||||||
if (order == 0)
|
if (order == 0)
|
||||||
free_hot_cold_page(page, 0);
|
free_hot_cold_page(page, false);
|
||||||
else
|
else
|
||||||
__free_pages_ok(page, order);
|
__free_pages_ok(page, order);
|
||||||
}
|
}
|
||||||
|
|
|
@ -67,7 +67,7 @@ static void __page_cache_release(struct page *page)
|
||||||
static void __put_single_page(struct page *page)
|
static void __put_single_page(struct page *page)
|
||||||
{
|
{
|
||||||
__page_cache_release(page);
|
__page_cache_release(page);
|
||||||
free_hot_cold_page(page, 0);
|
free_hot_cold_page(page, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __put_compound_page(struct page *page)
|
static void __put_compound_page(struct page *page)
|
||||||
|
@ -860,7 +860,7 @@ void lru_add_drain_all(void)
|
||||||
* grabbed the page via the LRU. If it did, give up: shrink_inactive_list()
|
* grabbed the page via the LRU. If it did, give up: shrink_inactive_list()
|
||||||
* will free it.
|
* will free it.
|
||||||
*/
|
*/
|
||||||
void release_pages(struct page **pages, int nr, int cold)
|
void release_pages(struct page **pages, int nr, bool cold)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
LIST_HEAD(pages_to_free);
|
LIST_HEAD(pages_to_free);
|
||||||
|
|
|
@ -270,7 +270,7 @@ void free_pages_and_swap_cache(struct page **pages, int nr)
|
||||||
|
|
||||||
for (i = 0; i < todo; i++)
|
for (i = 0; i < todo; i++)
|
||||||
free_swap_cache(pagep[i]);
|
free_swap_cache(pagep[i]);
|
||||||
release_pages(pagep, todo, 0);
|
release_pages(pagep, todo, false);
|
||||||
pagep += todo;
|
pagep += todo;
|
||||||
nr -= todo;
|
nr -= todo;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1121,7 +1121,7 @@ keep:
|
||||||
VM_BUG_ON_PAGE(PageLRU(page) || PageUnevictable(page), page);
|
VM_BUG_ON_PAGE(PageLRU(page) || PageUnevictable(page), page);
|
||||||
}
|
}
|
||||||
|
|
||||||
free_hot_cold_page_list(&free_pages, 1);
|
free_hot_cold_page_list(&free_pages, true);
|
||||||
|
|
||||||
list_splice(&ret_pages, page_list);
|
list_splice(&ret_pages, page_list);
|
||||||
count_vm_events(PGACTIVATE, pgactivate);
|
count_vm_events(PGACTIVATE, pgactivate);
|
||||||
|
@ -1532,7 +1532,7 @@ shrink_inactive_list(unsigned long nr_to_scan, struct lruvec *lruvec,
|
||||||
|
|
||||||
spin_unlock_irq(&zone->lru_lock);
|
spin_unlock_irq(&zone->lru_lock);
|
||||||
|
|
||||||
free_hot_cold_page_list(&page_list, 1);
|
free_hot_cold_page_list(&page_list, true);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If reclaim is isolating dirty pages under writeback, it implies
|
* If reclaim is isolating dirty pages under writeback, it implies
|
||||||
|
@ -1755,7 +1755,7 @@ static void shrink_active_list(unsigned long nr_to_scan,
|
||||||
__mod_zone_page_state(zone, NR_ISOLATED_ANON + file, -nr_taken);
|
__mod_zone_page_state(zone, NR_ISOLATED_ANON + file, -nr_taken);
|
||||||
spin_unlock_irq(&zone->lru_lock);
|
spin_unlock_irq(&zone->lru_lock);
|
||||||
|
|
||||||
free_hot_cold_page_list(&l_hold, 1);
|
free_hot_cold_page_list(&l_hold, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_SWAP
|
#ifdef CONFIG_SWAP
|
||||||
|
|
Loading…
Reference in New Issue