]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
fscache: Fix cookie key hashing
authorDavid Howells <dhowells@redhat.com>
Thu, 17 Jun 2021 13:21:00 +0000 (14:21 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 18 Sep 2021 11:41:56 +0000 (13:41 +0200)
commitfbf7b595b3881cb44f7541e91b172ac178d1e148
treee5ee55d3c27c857f48f5d854beaccea176ec118b
parentbc533ea14ba2033a1213d79f923a48c2c3e500f5
fscache: Fix cookie key hashing

[ Upstream commit 35b72573e977ed6b18b094136a4fa3e0ffb13603 ]

The current hash algorithm used for hashing cookie keys is really bad,
producing almost no dispersion (after a test kernel build, ~30000 files
were split over just 18 out of the 32768 hash buckets).

Borrow the full_name_hash() hash function into fscache to do the hashing
for cookie keys and, in the future, volume keys.

I don't want to use full_name_hash() as-is because I want the hash value to
be consistent across arches and over time as the hash value produced may
get used on disk.

I can also optimise parts of it away as the key will always be a padded
array of aligned 32-bit words.

Fixes: ec0328e46d6e ("fscache: Maintain a catalogue of allocated cookies")
Signed-off-by: David Howells <dhowells@redhat.com>
Reviewed-by: Jeff Layton <jlayton@redhat.com>
cc: linux-cachefs@redhat.com
Link: https://lore.kernel.org/r/162431201844.2908479.8293647220901514696.stgit@warthog.procyon.org.uk/
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/fscache/cookie.c
fs/fscache/internal.h
fs/fscache/main.c