All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] mm, hotplug: protect nr_zones with pgdat_resize_lock()
@ 2018-11-20  1:48 Wei Yang
  2018-11-20  7:31 ` Michal Hocko
  2018-11-22 10:12 ` [PATCH v2] mm, hotplug: move init_currently_empty_zone() under zone_span_lock protection Wei Yang
  0 siblings, 2 replies; 40+ messages in thread
From: Wei Yang @ 2018-11-20  1:48 UTC (permalink / raw)
  To: mhocko, osalvador; +Cc: akpm, linux-mm, Wei Yang

After memory hot-added, users could online pages through sysfs, and this
could be done in parallel.

In case two threads online pages in two different empty zones at the
same time, there would be a contention to update the nr_zones.

The patch use pgdat_resize_lock() to protect this critical section.

Signed-off-by: Wei Yang <richard.weiyang@gmail.com>
---
 mm/page_alloc.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index e13987c2e1c4..525a5344a13b 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -5796,9 +5796,12 @@ void __meminit init_currently_empty_zone(struct zone *zone,
 {
 	struct pglist_data *pgdat = zone->zone_pgdat;
 	int zone_idx = zone_idx(zone) + 1;
+	unsigned long flags;
 
+	pgdat_resize_lock(pgdat, &flags);
 	if (zone_idx > pgdat->nr_zones)
 		pgdat->nr_zones = zone_idx;
+	pgdat_resize_unlock(pgdat, &flags);
 
 	zone->zone_start_pfn = zone_start_pfn;
 
-- 
2.15.1

^ permalink raw reply related	[flat|nested] 40+ messages in thread

end of thread, other threads:[~2018-12-03 20:50 UTC | newest]

Thread overview: 40+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-11-20  1:48 [PATCH] mm, hotplug: protect nr_zones with pgdat_resize_lock() Wei Yang
2018-11-20  7:31 ` Michal Hocko
2018-11-20  7:58   ` osalvador
2018-11-20  8:48     ` Michal Hocko
2018-11-21  2:52     ` Wei Yang
2018-11-21  7:15       ` Michal Hocko
2018-11-22  1:52         ` Wei Yang
2018-11-22  8:39           ` Michal Hocko
2018-11-26  2:28         ` Wei Yang
2018-11-26  8:16           ` Michal Hocko
2018-11-26  9:06             ` Wei Yang
2018-11-26 10:03               ` Michal Hocko
2018-11-27  0:18                 ` Wei Yang
2018-11-27  3:12             ` Wei Yang
2018-11-27 13:16               ` Michal Hocko
2018-11-27 23:56                 ` Wei Yang
2018-11-21  8:24       ` osalvador
2018-11-21  2:44   ` Wei Yang
2018-11-21  7:14     ` Michal Hocko
2018-11-22 10:12 ` [PATCH v2] mm, hotplug: move init_currently_empty_zone() under zone_span_lock protection Wei Yang
2018-11-22 10:15   ` Wei Yang
2018-11-22 10:29     ` Michal Hocko
2018-11-22 14:27       ` Wei Yang
2018-11-22 10:37   ` osalvador
2018-11-22 14:28     ` Wei Yang
2018-11-22 15:26   ` David Hildenbrand
2018-11-22 21:28     ` Wei Yang
2018-11-22 21:53       ` David Hildenbrand
2018-11-22 23:53         ` Wei Yang
2018-11-23  8:42     ` Michal Hocko
2018-11-23  8:46       ` David Hildenbrand
2018-11-26  1:44         ` Wei Yang
2018-11-26  9:24           ` David Hildenbrand
2018-11-27  0:23             ` Wei Yang
2018-11-30  6:58   ` [PATCH v3] " Wei Yang
2018-11-30  9:30     ` David Hildenbrand
2018-12-01  0:27       ` Wei Yang
2018-12-03 10:09         ` David Hildenbrand
2018-12-03 20:37           ` Wei Yang
2018-12-03 20:50     ` [PATCH v4] " Wei Yang

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.