From 7f65652f741e842b5e92627da33cc8aa8afcedec Mon Sep 17 00:00:00 2001 From: Thomas Schoebel-Theuer Date: Thu, 20 Aug 2020 08:50:49 +0200 Subject: [PATCH] infra: better hash distribution --- kernel/sy_old/sy_generic.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/kernel/sy_old/sy_generic.c b/kernel/sy_old/sy_generic.c index 4d03251a..4cc82e8b 100644 --- a/kernel/sy_old/sy_generic.c +++ b/kernel/sy_old/sy_generic.c @@ -1462,6 +1462,7 @@ int mars_filler(void *__buf, const char *name, int namlen, loff_t offset, // end_remove_this struct mars_dent *dent; char *newpath; + unsigned char digest[MARS_DIGEST_SIZE]; int hash; int prefix = 0; int pathlen; @@ -1494,6 +1495,11 @@ int mars_filler(void *__buf, const char *name, int namlen, loff_t offset, pathlen += namlen; newpath[pathlen] = '\0'; + mars_digest(MREF_CHKSUM_CRC32C, + NULL, + digest, + newpath, pathlen); + dent = brick_zmem_alloc(cookie->allocsize); dent->d_class = class; @@ -1501,7 +1507,7 @@ int mars_filler(void *__buf, const char *name, int namlen, loff_t offset, dent->d_path = newpath; newpath = NULL; - hash = (class + serial + d_type + pathlen * 7 + namlen * 13) % MARS_GLOBAL_HASH; + hash = *(unsigned long *)&digest % MARS_GLOBAL_HASH; dent->d_hash = hash; dent->d_name = brick_string_alloc(namlen + 1); memcpy(dent->d_name, name, namlen);