On Tue, 10 Apr 2018, Matthew Wilcox wrote:
Objects can be freed and reused and still be accessed from code that thinks the object is the old and not the new object....
Yes, I know, that's the point of RCU typesafety. My point is that an object *which has never been used* can't be accessed. So you don't *need* a constructor.
But the object needs to have the proper contents after it was released and re-allocated. Some objects may rely on contents (like list heads) surviving the realloc process because access must always be possible.
validate_slab() checks on proper metadata content in a slab although it does not access the payload. So that may work you separate the payload init from the metadata init.