Re: [rfc][patch] dynamic resizing dentry hash using RCU

From: Nick Piggin
Date: Sun Mar 04 2007 - 23:27:47 EST


On Sun, Mar 04, 2007 at 08:11:42PM -0800, David Miller wrote:
> From: Nick Piggin <npiggin@xxxxxxx>
> Date: Fri, 23 Feb 2007 16:37:43 +0100
>
> > So I introduce a new method for resizing hash tables with RCU, and apply
> > that to the dentry hash.
>
> Thanks for doing this work Nick. I'm going to take your ideas
> and apply them to an ipv4 routing cache dynamic growth patch I
> worked on a while ago.

Sounds great, I would be happy to help review it. If we can create a
bit of common infrastructure, the dcache conversion might become a bit
more palatable and we could look at other things like the inode hash
as well.

> One minor nit:
>
> > +struct dentry_hash {
> > + unsigned int shift;
> > + unsigned long mask;
> > + struct hlist_head *table;
> > +};
>
> I don't see any reason to make 'mask' an unsigned long
> and this makes this structure take up 8 bytes more than
> necessary on 64-bit.

You're right, the mask is currently just an int, so my patch should
not be messing with that. Thanks.

The other thing you'll have to be careful of when looking at doing
an implementation, is that I think I forgot to use the RCU accessors
(rcu_assign_pointer, rcu_dereference) when assigning and loading
the new/old hash table pointers.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/