On Fri, Jun 7, 2019 at 1:23 PM Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote: > > On Fri, Jun 07, 2019 at 12:27:50PM -0700, Dan Williams wrote: > > diff --git a/lib/memregion.c b/lib/memregion.c > > new file mode 100644 > > index 000000000000..f6c6a94c7921 > > --- /dev/null > > +++ b/lib/memregion.c > > @@ -0,0 +1,15 @@ > > +#include <linux/idr.h> > > + > > +static DEFINE_IDA(region_ids); > > + > > +int memregion_alloc(gfp_t gfp) > > +{ > > + return ida_alloc(®ion_ids, gfp); > > +} > > +EXPORT_SYMBOL(memregion_alloc); > > + > > +void memregion_free(int id) > > +{ > > + ida_free(®ion_ids, id); > > +} > > +EXPORT_SYMBOL(memregion_free); > > Does this trivial abstraction have to live in its own file? I'd make > memregion_alloc/free static inlines that live in a header file, then > all you need do is find a suitable .c file to store memregion_ids in, > and export that one symbol instead of two. It turns out yes, this needs to live in its own file. It's an optional library that does not fit anywhere else, everywhere I've thought to stash it has either triggered obscure build errors based on idr.h include dependencies or does not fit due to build dependencies.