diff options
Diffstat (limited to 'drivers/base/node.c')
| -rw-r--r-- | drivers/base/node.c | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/drivers/base/node.c b/drivers/base/node.c index 904b27caf697..16c513aa4d48 100644 --- a/drivers/base/node.c +++ b/drivers/base/node.c | |||
| @@ -39,13 +39,25 @@ static ssize_t node_read_meminfo(struct sys_device * dev, char * buf) | |||
| 39 | int n; | 39 | int n; |
| 40 | int nid = dev->id; | 40 | int nid = dev->id; |
| 41 | struct sysinfo i; | 41 | struct sysinfo i; |
| 42 | struct page_state ps; | ||
| 42 | unsigned long inactive; | 43 | unsigned long inactive; |
| 43 | unsigned long active; | 44 | unsigned long active; |
| 44 | unsigned long free; | 45 | unsigned long free; |
| 45 | 46 | ||
| 46 | si_meminfo_node(&i, nid); | 47 | si_meminfo_node(&i, nid); |
| 48 | get_page_state_node(&ps, nid); | ||
| 47 | __get_zone_counts(&active, &inactive, &free, NODE_DATA(nid)); | 49 | __get_zone_counts(&active, &inactive, &free, NODE_DATA(nid)); |
| 48 | 50 | ||
| 51 | /* Check for negative values in these approximate counters */ | ||
| 52 | if ((long)ps.nr_dirty < 0) | ||
| 53 | ps.nr_dirty = 0; | ||
| 54 | if ((long)ps.nr_writeback < 0) | ||
| 55 | ps.nr_writeback = 0; | ||
| 56 | if ((long)ps.nr_mapped < 0) | ||
| 57 | ps.nr_mapped = 0; | ||
| 58 | if ((long)ps.nr_slab < 0) | ||
| 59 | ps.nr_slab = 0; | ||
| 60 | |||
| 49 | n = sprintf(buf, "\n" | 61 | n = sprintf(buf, "\n" |
| 50 | "Node %d MemTotal: %8lu kB\n" | 62 | "Node %d MemTotal: %8lu kB\n" |
| 51 | "Node %d MemFree: %8lu kB\n" | 63 | "Node %d MemFree: %8lu kB\n" |
| @@ -55,7 +67,11 @@ static ssize_t node_read_meminfo(struct sys_device * dev, char * buf) | |||
| 55 | "Node %d HighTotal: %8lu kB\n" | 67 | "Node %d HighTotal: %8lu kB\n" |
| 56 | "Node %d HighFree: %8lu kB\n" | 68 | "Node %d HighFree: %8lu kB\n" |
| 57 | "Node %d LowTotal: %8lu kB\n" | 69 | "Node %d LowTotal: %8lu kB\n" |
| 58 | "Node %d LowFree: %8lu kB\n", | 70 | "Node %d LowFree: %8lu kB\n" |
| 71 | "Node %d Dirty: %8lu kB\n" | ||
| 72 | "Node %d Writeback: %8lu kB\n" | ||
| 73 | "Node %d Mapped: %8lu kB\n" | ||
| 74 | "Node %d Slab: %8lu kB\n", | ||
| 59 | nid, K(i.totalram), | 75 | nid, K(i.totalram), |
| 60 | nid, K(i.freeram), | 76 | nid, K(i.freeram), |
| 61 | nid, K(i.totalram - i.freeram), | 77 | nid, K(i.totalram - i.freeram), |
| @@ -64,7 +80,11 @@ static ssize_t node_read_meminfo(struct sys_device * dev, char * buf) | |||
| 64 | nid, K(i.totalhigh), | 80 | nid, K(i.totalhigh), |
| 65 | nid, K(i.freehigh), | 81 | nid, K(i.freehigh), |
| 66 | nid, K(i.totalram - i.totalhigh), | 82 | nid, K(i.totalram - i.totalhigh), |
| 67 | nid, K(i.freeram - i.freehigh)); | 83 | nid, K(i.freeram - i.freehigh), |
| 84 | nid, K(ps.nr_dirty), | ||
| 85 | nid, K(ps.nr_writeback), | ||
| 86 | nid, K(ps.nr_mapped), | ||
| 87 | nid, K(ps.nr_slab)); | ||
| 68 | n += hugetlb_report_node_meminfo(nid, buf + n); | 88 | n += hugetlb_report_node_meminfo(nid, buf + n); |
| 69 | return n; | 89 | return n; |
| 70 | } | 90 | } |
