On Tue, 14 Aug 2012 18:24:35 +0200 Sasha Levin <levinsasha928@xxxxxxxxx> wrote: > +static inline void hash_init_size(struct hlist_head *hashtable, int bits) > +{ > + int i; > + > + for (i = 0; i < HASH_SIZE(bits); i++) > + INIT_HLIST_HEAD(hashtable + i); > +} This seems like an inefficient way to do "memset(hashtable, 0, ...);". And in many cases it isn't needed as the hash table is static and initialised to zero. I note that in the SUNRPC/cache patch you call hash_init(), but in the lockd patch you don't. You don't actually need to in either case. I realise that any optimisation here is for code that is only executed once per boot, so no big deal, and even the presence of extra code making the kernel bigger is unlikely to be an issue. But I'd at least like to see consistency: Either use hash_init everywhere, even when not needed, or only use it where absolutely needed which might be no-where because static tables are already initialised, and dynamic tables can use GFP_ZERO. And if you keep hash_init_size I would rather see a memset(0).... Thanks, NeilBrown
Attachment:
signature.asc
Description: PGP signature