On Tue, 16 Jan 2018, Matthew Wilcox wrote: > On Tue, Jan 16, 2018 at 12:17:01PM -0600, Christopher Lameter wrote: > > Draft patch of how the data structs could change. kmem_cache_attr is read > > only. > > Looks good. Although I would add Kees' user feature: Sure I tried to do this quickly so that the basic struct changes are visible. > And I'd start with > +struct kmem_cache *kmem_cache_create_attr(const kmem_cache_attr *); > > leaving the old kmem_cache_create to kmalloc a kmem_cache_attr and > initialise it. Well at some point we should convert the callers by putting the definitions into const kmem_cache_attr initializations. That way the callbacks function pointers are safe. > Can we also do something like this? > > -#define KMEM_CACHE(__struct, __flags) kmem_cache_create(#__struct,\ > - sizeof(struct __struct), __alignof__(struct __struct),\ > - (__flags), NULL) > +#define KMEM_CACHE(__struct, __flags) ({ \ > + const struct kmem_cache_attr kca ## __stringify(__struct) = { \ > + .name = #__struct, \ > + .size = sizeof(struct __struct), \ > + .align = __alignof__(struct __struct), \ > + .flags = (__flags), \ > + }; \ > + kmem_cache_create_attr(&kca ## __stringify(__struct)); \ > +}) > > That way we won't need to convert any of those users. Yep thats what I was planning.