Commit b745bc85 authored by Mel Gorman's avatar Mel Gorman Committed by Linus Torvalds

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: default avatarMel Gorman <mgorman@suse.de>
Acked-by: default avatarRik 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: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 7aeb09f9
...@@ -417,7 +417,7 @@ void __homecache_free_pages(struct page *page, unsigned int order) ...@@ -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 @@ static int fuse_notify_store(struct fuse_conn *fc, unsigned int size, ...@@ -1614,7 +1614,7 @@ static int fuse_notify_store(struct fuse_conn *fc, unsigned int size,
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); ...@@ -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) ...@@ -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) ...@@ -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 @@ static struct page *__rmqueue(struct zone *zone, unsigned int order, ...@@ -1199,7 +1199,7 @@ static struct page *__rmqueue(struct zone *zone, unsigned int order,
*/ */
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, ...@@ -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) ...@@ -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) ...@@ -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 @@ void free_hot_cold_page(struct page *page, int cold) ...@@ -1431,7 +1431,7 @@ void free_hot_cold_page(struct page *page, int cold)
/* /*
* 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, ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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 @@ static unsigned long shrink_page_list(struct list_head *page_list, ...@@ -1121,7 +1121,7 @@ static unsigned long shrink_page_list(struct list_head *page_list,
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, ...@@ -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, ...@@ -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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment