Re: [RFC PATCH 1/1] vmalloc: add test driver to analyse vmalloc allocator

From: Andrew Morton
Date: Thu Nov 15 2018 - 15:57:58 EST


On Thu, 15 Nov 2018 05:47:06 -0800 Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote:

> On Thu, Nov 15, 2018 at 01:57:50PM +0100, Michal Hocko wrote:
> > On Thu 15-11-18 00:46:42, Matthew Wilcox wrote:
> > > How about adding
> > >
> > > #ifdef CONFIG_VMALLOC_TEST
> > > int run_internal_vmalloc_tests(void)
> > > {
> > > ...
> > > }
> > > EXPORT_SYMBOL_GPL(run_internal_vmalloc_tests);
> > > #endif
> > >
> > > to vmalloc.c? That would also allow calling functions which are marked
> > > as static, not just functions which aren't exported to modules.
> >
> > Yes that would be easier but do we want to pollute the normal code with
> > testing? This looks messy to me.
>
> I don't think it's necessarily the worst thing in the world if random
> people browsing the file are forced to read test-cases ;-)
>
> There's certainly a spectrum of possibilities here, one end being to
> basically just re-export static functions,

Yes, if we're to it this way then a basic

#ifdef CONFIG_VMALLOC_TEST
EXPORT_SYMBOL_GPL(__vmalloc_node_range);
#endif

should suffice. If the desired symbol was a static one, a little
non-static wrapper would be needed as well.

> and the other end putting
> every vmalloc test into vmalloc.c. vmalloc.c is pretty big at 70kB, but
> on the other hand, it's the 18th largest file in mm/ (can you believe
> page_alloc.c is 230kB?!)