forked from luck/tmp_suning_uos_patched
[PATCH] numa node ids are int, page_to_nid and zone_to_nid should return int
NUMA node ids are passed as either int or unsigned int almost exclusivly page_to_nid and zone_to_nid both return unsigned long. This is a throw back to when page_to_nid was a #define and was thus exposing the real type of the page flags field. In addition to fixing up the definitions of page_to_nid and zone_to_nid I audited the users of these functions identifying the following incorrect uses: 1) mm/page_alloc.c show_node() -- printk dumping the node id, 2) include/asm-ia64/pgalloc.h pgtable_quicklist_free() -- comparison against numa_node_id() which returns an int from cpu_to_node(), and 3) mm/mpolicy.c check_pte_range -- used as an index in node_isset which uses bit_set which in generic code takes an int. Signed-off-by: Andy Whitcroft <apw@shadowen.org> Cc: Christoph Lameter <clameter@engr.sgi.com> Cc: "Luck, Tony" <tony.luck@intel.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
bc4ba393c0
commit
25ba77c141
|
@ -60,7 +60,7 @@ static inline void *pgtable_quicklist_alloc(void)
|
|||
static inline void pgtable_quicklist_free(void *pgtable_entry)
|
||||
{
|
||||
#ifdef CONFIG_NUMA
|
||||
unsigned long nid = page_to_nid(virt_to_page(pgtable_entry));
|
||||
int nid = page_to_nid(virt_to_page(pgtable_entry));
|
||||
|
||||
if (unlikely(nid != numa_node_id())) {
|
||||
free_page((unsigned long)pgtable_entry);
|
||||
|
|
|
@ -456,7 +456,7 @@ static inline int page_zone_id(struct page *page)
|
|||
return (page->flags >> ZONEID_PGSHIFT) & ZONEID_MASK;
|
||||
}
|
||||
|
||||
static inline unsigned long zone_to_nid(struct zone *zone)
|
||||
static inline int zone_to_nid(struct zone *zone)
|
||||
{
|
||||
#ifdef CONFIG_NUMA
|
||||
return zone->node;
|
||||
|
@ -466,9 +466,9 @@ static inline unsigned long zone_to_nid(struct zone *zone)
|
|||
}
|
||||
|
||||
#ifdef NODE_NOT_IN_PAGE_FLAGS
|
||||
extern unsigned long page_to_nid(struct page *page);
|
||||
extern int page_to_nid(struct page *page);
|
||||
#else
|
||||
static inline unsigned long page_to_nid(struct page *page)
|
||||
static inline int page_to_nid(struct page *page)
|
||||
{
|
||||
return (page->flags >> NODES_PGSHIFT) & NODES_MASK;
|
||||
}
|
||||
|
|
|
@ -221,7 +221,7 @@ static int check_pte_range(struct vm_area_struct *vma, pmd_t *pmd,
|
|||
orig_pte = pte = pte_offset_map_lock(vma->vm_mm, pmd, addr, &ptl);
|
||||
do {
|
||||
struct page *page;
|
||||
unsigned int nid;
|
||||
int nid;
|
||||
|
||||
if (!pte_present(*pte))
|
||||
continue;
|
||||
|
|
|
@ -1407,7 +1407,7 @@ unsigned int nr_free_pagecache_pages(void)
|
|||
static inline void show_node(struct zone *zone)
|
||||
{
|
||||
if (NUMA_BUILD)
|
||||
printk("Node %ld ", zone_to_nid(zone));
|
||||
printk("Node %d ", zone_to_nid(zone));
|
||||
}
|
||||
|
||||
void si_meminfo(struct sysinfo *val)
|
||||
|
|
|
@ -36,7 +36,7 @@ static u8 section_to_node_table[NR_MEM_SECTIONS] __cacheline_aligned;
|
|||
static u16 section_to_node_table[NR_MEM_SECTIONS] __cacheline_aligned;
|
||||
#endif
|
||||
|
||||
unsigned long page_to_nid(struct page *page)
|
||||
int page_to_nid(struct page *page)
|
||||
{
|
||||
return section_to_node_table[page_to_section(page)];
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user