[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <32740.1392934995@warthog.procyon.org.uk>
Date: Thu, 20 Feb 2014 22:23:15 +0000
From: David Howells <dhowells@...hat.com>
To: Fabian Frederick <fabf@...net.be>
Cc: dhowells@...hat.com, linux-kernel@...r.kernel.org,
akpm <akpm@...ux-foundation.org>, cl@...ux-foundation.org
Subject: Has slab ctor operation changed? -- was [PATCH 1/1] afs: afs_alloc_inode: use kmem_cache_zalloc
Fabian Frederick <fabf@...net.be> wrote:
> afs_vnode is currently cleared with 2 memsets after allocation and
> 1 in constructor (afs_i_init_once).
> -This patch calls zalloc for explicit zero fill.
Ummm... This patch isn't necessarily correct in the substantiative portions.
Since afs_i_init_once() is called by the slab allocator during the course of
kmem_cache_alloc(), how does kmem_cache_zalloc() interact with that?
IIRC, it used to be that the ctor() function was called when the pages were
allocated to the slab - and it wasn't called again, even if the object was
allocated, deallocated and reallocated. This means that things like locks and
lists don't need reinitialising after allocation.
So afs_i_init_once() theoretically constructs the stuff that can be reused,
and afs_alloc_inode() therefore has to clear the non-reusable state.
Of course, it's possible that the slab allocator no longer works like this...
David
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists