From: Yehuda Sadeh Date: Tue, 2 Dec 2014 22:17:14 +0000 (-0800) Subject: rgw: improve bucket sharding hashing X-Git-Tag: v0.92~12^2~22 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=d31e84ea9432e1e481b7adcfcdbd78c06a02be75;p=ceph.git rgw: improve bucket sharding hashing Amplify small source changes. Signed-off-by: Yehuda Sadeh --- 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;