Messages in this thread | | | Date | Mon, 5 Mar 2007 05:27:24 +0100 | From | Nick Piggin <> | Subject | Re: [rfc][patch] dynamic resizing dentry hash using RCU |
| |
On Sun, Mar 04, 2007 at 08:11:42PM -0800, David Miller wrote: > From: Nick Piggin <npiggin@suse.de> > 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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |