Re: Common hash table implementation

Brian J. Watson
2001-07-20T22:52:53Z

Andi Kleen wrote:
> It's a "fuzzy hash", which is a bit different from the normal hash and
> probably not always appropiate.
>
> It was at one point used in the dcache but then later ripped out again
> when the data structures changed.
>

Ahh. I'm not familiar with fuzzy hashes, but I suspected they might
not be what I was interested in.

> I would like to see a generic hash abstraction in the spirit of list.h
> Especially if it would NOT use normal list_heads as open hash table
> heads but instead single pointers for the head [currently some important
>
> hash tables like the inode hash are twice as big as needed because
> each bucket is two pointers instead of one]
>

I agree. Hash tables such as inode_hashtable and dentry_hashtable are
half as efficient under stress as they would otherwise be, because
they use an array of list_heads.

OTOH, I have no objections to using list_heads in other applications
where a singly-linked list is all that's needed. Common code is a Good
Thing. I'm just commenting specifically on hash table implementations,
which tend to be used for really _big_ data structures.

--
Brian Watson | "The common people of England... so
Linux Kernel Developer | jealous of their liberty, but like the
Open SSI Clustering Project | common people of most other countries
Compaq Computer Corp | never rightly considering wherein it
Los Angeles, CA | consists..."
| -Adam Smith, Wealth of Nations,
1776

mailto:Brian.J.Watson@compaq.com