From d31e84ea9432e1e481b7adcfcdbd78c06a02be75 Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Tue, 2 Dec 2014 14:17:14 -0800 Subject: [PATCH] rgw: improve bucket sharding hashing Amplify small source changes. Signed-off-by: Yehuda Sadeh --- src/rgw/rgw_rados.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index 149e7347de72..135e3cd7ee84 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -7014,8 +7014,9 @@ int RGWRados::get_bucket_index_object(const string& bucket_oid_base, const strin *shard_id = -1; } } else { - uint32_t sid = ceph_str_hash_linux(obj_key.c_str(), - obj_key.size()) % MAX_BUCKET_INDEX_SHARDS_PRIME % num_shards; + uint32_t sid = ceph_str_hash_linux(obj_key.c_str(), obj_key.size()); + uint32_t sid2 = sid ^ ((sid & 0xFF) << 24); + sid = sid2 % MAX_BUCKET_INDEX_SHARDS_PRIME % num_shards; char buf[bucket_oid_base.size() + 32]; snprintf(buf, sizeof(buf), "%s.%d", bucket_oid_base.c_str(), sid); (*bucket_obj) = buf; -- 2.47.3