On 8/28/24 12:56, Christian Brauner wrote: > When a kmem cache is created with SLAB_TYPESAFE_BY_RCU the free pointer > must be located outside of the object because we don't know what part of > the memory can safely be overwritten as it may be needed to prevent > object recycling. > > That has the consequence that SLAB_TYPESAFE_BY_RCU may end up adding a > new cacheline. This is the case for e.g., struct file. After having it > shrunk down by 40 bytes and having it fit in three cachelines we still > have SLAB_TYPESAFE_BY_RCU adding a fourth cacheline because it needs to > accommodate the free pointer. > > Add a new kmem_cache_create_rcu() function that allows the caller to > specify an offset where the free pointer is supposed to be placed. > > Signed-off-by: Christian Brauner <brauner@xxxxxxxxxx> Reviewed-by: Vlastimil Babka <vbabka@xxxxxxx> Thanks.