Re: [PATCH v2 0/3] fs,mm: add kmem_cache_create_rcu()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Aug 27, 2024 at 05:59:41PM GMT, 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
> accomodate the free pointer and is hardware cacheline aligned.
> 
> I tried to find ways to rectify this as struct file is pretty much
> everywhere and having it use less memory is a good thing. So here's a
> proposal.
> 
> I was hoping to get something to this effect into v6.12.
> 
> If we really want to switch to a struct to pass kmem_cache parameters I
> can do the preparatory patch to convert all kmem_cache_create() and
> kmem_cache_create_usercopy() callers to use a struct for initialization
> of course. I can do this as a preparatory work or as follow-up work to
> this series. Thoughts?

So one thing I can do is to add:

struct kmem_cache_args {
	.freeptr_offset,
	.useroffset,
	.flags,
	.name,
};

accompanied by:

int kmem_create_cache(struct kmem_cache_args *args);

and then switch both the filp cache and Jens' io_kiocb cache over to use
these two helpers. Then we can convert other callers one by one.

@Vlastimil, @Jens, @Linus what do you think?




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux