Re: [PATCH 1 of 6] hotplug-memory: refactor online_pages to separatezone growth from page onlining

From: Jeremy Fitzhardinge
Date: Fri Apr 04 2008 - 01:35:30 EST


Yasunori Goto wrote:
+/* Mark a set of pages as online */
+unsigned long mark_pages_onlined(unsigned long pfn, unsigned long nr_pages)
+{
+ struct zone *zone = page_zone(pfn_to_page(pfn));
+ unsigned long onlined_pages = 0;
+ int need_zonelists_rebuild = 0;
/*
* If this zone is not populated, then it is not in zonelist.
@@ -240,10 +246,38 @@
vm_total_pages = nr_free_pagecache_pages();
writeback_set_ratelimit();
- if (onlined_pages)
+ if (onlined_pages) {
+ struct memory_notify arg;
+
+ arg.start_pfn = pfn; /* ? */
+ arg.nr_pages = onlined_pages;
+ arg.status_change_nid = -1; /* ? */

status_change_nid is to prepare data structures which are allocated on
each NUMA node.

OK. I didn't really understand the intent this logic in the GOING_ONLINE notifier path:

arg.status_change_nid = -1;

nid = page_to_nid(pfn_to_page(pfn));
if (node_present_pages(nid) == 0)
arg.status_change_nid = nid;

and how that should relate to the ONLINE notifier.

When memory less node gets new memory, and it changes status
to normal memory, then status_change_nid must be set.

SLUB uses it now.

Only for GOING_ONLINE.

J
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/