summaryrefslogtreecommitdiffstats
path: root/mm/page_idle.c
diff options
context:
space:
mode:
authorAndrey Ryabinin <aryabinin@virtuozzo.com>2019-03-05 18:49:39 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2019-03-06 00:07:21 -0500
commitf4b7e272b5c0425915e2115068e0a5a20a3a628e (patch)
tree7b5894a4cc657a7606aa183187392b7eae7e22bc /mm/page_idle.c
parenta7ca12f9d905e7437dd3beb9cbb8e85bc2b991f4 (diff)
mm: remove zone_lru_lock() function, access ->lru_lock directly
We have common pattern to access lru_lock from a page pointer: zone_lru_lock(page_zone(page)) Which is silly, because it unfolds to this: &NODE_DATA(page_to_nid(page))->node_zones[page_zonenum(page)]->zone_pgdat->lru_lock while we can simply do &NODE_DATA(page_to_nid(page))->lru_lock Remove zone_lru_lock() function, since it's only complicate things. Use 'page_pgdat(page)->lru_lock' pattern instead. [aryabinin@virtuozzo.com: a slightly better version of __split_huge_page()] Link: http://lkml.kernel.org/r/20190301121651.7741-1-aryabinin@virtuozzo.com Link: http://lkml.kernel.org/r/20190228083329.31892-2-aryabinin@virtuozzo.com Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com> Acked-by: Vlastimil Babka <vbabka@suse.cz> Acked-by: Mel Gorman <mgorman@techsingularity.net> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Michal Hocko <mhocko@kernel.org> Cc: Rik van Riel <riel@surriel.com> Cc: William Kucharski <william.kucharski@oracle.com> Cc: John Hubbard <jhubbard@nvidia.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/page_idle.c')
-rw-r--r--mm/page_idle.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/mm/page_idle.c b/mm/page_idle.c
index b9e4b42b33ab..0b39ec0c945c 100644
--- a/mm/page_idle.c
+++ b/mm/page_idle.c
@@ -31,7 +31,7 @@
31static struct page *page_idle_get_page(unsigned long pfn) 31static struct page *page_idle_get_page(unsigned long pfn)
32{ 32{
33 struct page *page; 33 struct page *page;
34 struct zone *zone; 34 pg_data_t *pgdat;
35 35
36 if (!pfn_valid(pfn)) 36 if (!pfn_valid(pfn))
37 return NULL; 37 return NULL;
@@ -41,13 +41,13 @@ static struct page *page_idle_get_page(unsigned long pfn)
41 !get_page_unless_zero(page)) 41 !get_page_unless_zero(page))
42 return NULL; 42 return NULL;
43 43
44 zone = page_zone(page); 44 pgdat = page_pgdat(page);
45 spin_lock_irq(zone_lru_lock(zone)); 45 spin_lock_irq(&pgdat->lru_lock);
46 if (unlikely(!PageLRU(page))) { 46 if (unlikely(!PageLRU(page))) {
47 put_page(page); 47 put_page(page);
48 page = NULL; 48 page = NULL;
49 } 49 }
50 spin_unlock_irq(zone_lru_lock(zone)); 50 spin_unlock_irq(&pgdat->lru_lock);
51 return page; 51 return page;
52} 52}
53 53