summaryrefslogtreecommitdiff
path: root/libbcache/dirent.c
diff options
context:
space:
mode:
Diffstat (limited to 'libbcache/dirent.c')
-rw-r--r--libbcache/dirent.c31
1 files changed, 5 insertions, 26 deletions
diff --git a/libbcache/dirent.c b/libbcache/dirent.c
index d97c3b22..ebf0f101 100644
--- a/libbcache/dirent.c
+++ b/libbcache/dirent.c
@@ -23,34 +23,13 @@ unsigned bch_dirent_name_bytes(struct bkey_s_c_dirent d)
static u64 bch_dirent_hash(const struct bch_hash_info *info,
const struct qstr *name)
{
- switch (info->type) {
- case BCH_STR_HASH_SHA1: {
- SHASH_DESC_ON_STACK(desc, bch_sha1);
- u8 digest[SHA1_DIGEST_SIZE];
- u64 ret;
- desc->tfm = bch_sha1;
- desc->flags = 0;
- crypto_shash_init(desc);
-
- crypto_shash_update(desc, (void *) &info->seed, sizeof(info->seed));
-
- crypto_shash_update(desc, (void *) name->name, name->len);
- crypto_shash_final(desc, digest);
- memcpy(&ret, &digest, sizeof(ret));
- return max_t(u64, ret >> 1, 2);
- }
- default: {
- struct bch_str_hash_ctx ctx;
-
- bch_str_hash_init(&ctx, info->type);
- bch_str_hash_update(&ctx, info->type, &info->seed, sizeof(info->seed));
+ struct bch_str_hash_ctx ctx;
- bch_str_hash_update(&ctx, info->type, name->name, name->len);
+ bch_str_hash_init(&ctx, info);
+ bch_str_hash_update(&ctx, info, name->name, name->len);
- /* [0,2) reserved for dots */
- return max_t(u64, bch_str_hash_end(&ctx, info->type), 2);
- }
- }
+ /* [0,2) reserved for dots */
+ return max_t(u64, bch_str_hash_end(&ctx, info), 2);
}
static u64 dirent_hash_key(const struct bch_hash_info *info, const void *key)