On Wed, 24 Aug 2011 22:55:02 -0700 (PDT) David Rientjes wrote: > On Thu, 25 Aug 2011, Cong Wang wrote: > > > Ah, this is because I missed the part in include/linux/node.h. :) > > > > Below is the updated version. > > > > I've never had a problem building a kernel with CONFIG_NUMA=y and > CONFIG_SYSFS=n since most of drivers/base/node.c is just an abstraction > that calls into sysfs functions that will be no-ops in such a > configuration. > > The error you cite in a different thread > (http://marc.info/?l=linux-mm&m=131098795024186) about an undefined > reference to vmstat_text is because you have CONFIG_NUMA enabled and both > CONFIG_SYSFS and CONFIG_PROC_FS disabled and we only define vmstat_text > for those fs configurations since that's the only way these strings were > ever emitted before per-node vmstat. > > The correct fix is to define the array for CONFIG_NUMA as well. > > > > numa: fix NUMA compile error when sysfs and procfs are disabled > > The vmstat_text array is only defined for CONFIG_SYSFS or CONFIG_PROC_FS, > yet it is referenced for per-node vmstat with CONFIG_NUMA: > > drivers/built-in.o: In function `node_read_vmstat': > node.c:(.text+0x1106df): undefined reference to `vmstat_text' > > in fa25c503dfa2 (mm: per-node vmstat: show proper vmstats). > > Define the array for CONFIG_NUMA as well. > > Reported-by: Cong Wang <amwang@xxxxxxxxxx> > Signed-off-by: David Rientjes <rientjes@xxxxxxxxxx> Sure, that also works. Acked-by: Randy Dunlap <rdunlap@xxxxxxxxxxxx> > --- > include/linux/vmstat.h | 2 ++ > mm/vmstat.c | 4 ++-- > 2 files changed, 4 insertions(+), 2 deletions(-) > > diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h > --- a/include/linux/vmstat.h > +++ b/include/linux/vmstat.h > @@ -258,6 +258,8 @@ static inline void refresh_zone_stat_thresholds(void) { } > > #endif /* CONFIG_SMP */ > > +#if defined(CONFIG_PROC_FS) || defined(CONFIG_SYSFS) || defined(CONFIG_NUMA) > extern const char * const vmstat_text[]; > +#endif > > #endif /* _LINUX_VMSTAT_H */ > diff --git a/mm/vmstat.c b/mm/vmstat.c > --- a/mm/vmstat.c > +++ b/mm/vmstat.c > @@ -659,7 +659,7 @@ static void walk_zones_in_node(struct seq_file *m, pg_data_t *pgdat, > } > #endif > > -#if defined(CONFIG_PROC_FS) || defined(CONFIG_SYSFS) > +#if defined(CONFIG_PROC_FS) || defined(CONFIG_SYSFS) || defined(CONFIG_NUMA) > #ifdef CONFIG_ZONE_DMA > #define TEXT_FOR_DMA(xx) xx "_dma", > #else > @@ -788,7 +788,7 @@ const char * const vmstat_text[] = { > > #endif /* CONFIG_VM_EVENTS_COUNTERS */ > }; > -#endif /* CONFIG_PROC_FS || CONFIG_SYSFS */ > +#endif /* CONFIG_PROC_FS || CONFIG_SYSFS || CONFIG_NUMA */ > > > #ifdef CONFIG_PROC_FS --- ~Randy *** Remember to use Documentation/SubmitChecklist when testing your code *** -- To unsubscribe from this list: send the line "unsubscribe linux-next" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html