From 703b5faf22fbddf984a361e6555f3a03fdba63d9 Mon Sep 17 00:00:00 2001 From: George Spelvin Date: Fri, 10 Jun 2016 00:22:12 -0400 Subject: fs/dcache.c: Save one 32-bit multiply in dcache lookup Noe that we're mixing in the parent pointer earlier, we don't need to use hash_32() to mix its bits. Instead, we can just take the msbits of the hash value directly. For those applications which use the partial_name_hash(), move the multiply to end_name_hash. Signed-off-by: George Spelvin Signed-off-by: Linus Torvalds --- include/linux/stringhash.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'include/linux/stringhash.h') diff --git a/include/linux/stringhash.h b/include/linux/stringhash.h index eb7debb280c0..7c2d95170d01 100644 --- a/include/linux/stringhash.h +++ b/include/linux/stringhash.h @@ -3,6 +3,7 @@ #include /* For __pure */ #include /* For u32, u64 */ +#include /* * Routines for hashing strings of bytes to a 32-bit hash value. @@ -45,11 +46,12 @@ partial_name_hash(unsigned long c, unsigned long prevhash) /* * Finally: cut down the number of bits to a int value (and try to avoid - * losing bits) + * losing bits). This also has the property (wanted by the dcache) + * that the msbits make a good hash table index. */ static inline unsigned long end_name_hash(unsigned long hash) { - return (unsigned int)hash; + return __hash_32((unsigned int)hash); } /* -- cgit v1.2.3-71-gd317