Re: [PATCH v3 2/2] vfs: avoid duplicating creds in faccessat if possible
From: Mateusz Guzik <hidden>
Date: 2023-03-04 20:42:26
Also in:
linux-fsdevel, lkml
From: Mateusz Guzik <hidden>
Date: 2023-03-04 20:42:26
Also in:
linux-fsdevel, lkml
On 3/4/23, Al Viro [off-list ref] wrote:
On Fri, Mar 03, 2023 at 09:39:11PM +0100, Mateusz Guzik wrote:quoted
the allocation routine does not have any information about the size available at compilation time, so has to resort to a memset call at runtime. Instead, should this be: f = kmem_cache_alloc(...); memset(f, 0, sizeof(*f)); ... the compiler could in principle inititalize stuff as indicated by code and emit zerofill for the rest. Interestingly, last I checked neither clang nor gcc knew how to do it, they instead resort to a full sized memset anyway, which is quite a bummer.For struct file I wouldn't expect a win from that, TBH.
That was mostly for illustrative purposes, but you are right -- turns out the slab is 256 bytes in size per obj and only a small fraction of it is inititalized in the allocation routine. Good candidate to always punt to memset in the allocator as it happens now. Bummer though, it is also one of the 2 most memset'ed during kernel build. The other one allocated at the same rate is lsm_file_cache and that's only 32 bytes in size, so it will get a win. -- Mateusz Guzik <mjguzik gmail.com>