diff options
| author | Andrew Morton <akpm@osdl.org> | 2003-07-02 08:47:43 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@home.osdl.org> | 2003-07-02 08:47:43 -0700 |
| commit | d4388840f41d71d1570326f77860431c7080f7ed (patch) | |
| tree | 21a795d60c6ed79d991445f2ed63f54e9a5d9c3d /include/linux | |
| parent | 98eb235b7febbb2941e1b442b92fc5e23b0d7a83 (diff) | |
[PATCH] NUMA memory reporting fix
From: Dave Hansen <haveblue@us.ibm.com>
The current numa meminfo code exports (via sysfs) pgdat->node_size, as
totalram. This variable is consistently used elsewhere to mean "the number
of physical pages that this particular node spans". This is _not_ what we
want to see from meminfo, which is: "how much actual memory does this node
have?"
The following patch removes pgdat->node_size, and replaces it with
->node_spanned_pages. This is to avoid confusion with a new variable,
node_present_pages, which is the _actual_ value that we want to export in
meminfo. Most of the patch is a simple s/node_size/node_spanned_pages/.
The node_size() macro is also removed, and replaced with new ones for
node_{spanned,present}_pages() to avoid confusion.
We were bitten by this problem in this bug:
http://bugme.osdl.org/show_bug.cgi?id=818
Compiled and tested on NUMA-Q.
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/mmzone.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index 21e95664fdf8..e768f7ab8963 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h @@ -184,12 +184,17 @@ typedef struct pglist_data { unsigned long *valid_addr_bitmap; struct bootmem_data *bdata; unsigned long node_start_pfn; - unsigned long node_size; + unsigned long node_present_pages; /* total number of physical pages */ + unsigned long node_spanned_pages; /* total size of physical page + range, including holes */ int node_id; struct pglist_data *pgdat_next; wait_queue_head_t kswapd_wait; } pg_data_t; +#define node_present_pages(nid) (NODE_DATA(nid)->node_present_pages) +#define node_spanned_pages(nid) (NODE_DATA(nid)->node_spanned_pages) + extern int numnodes; extern struct pglist_data *pgdat_list; |
