]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: improve bucket sharding hashing
authorYehuda Sadeh <yehuda@redhat.com>
Tue, 2 Dec 2014 22:17:14 +0000 (14:17 -0800)
committerYehuda Sadeh <yehuda@redhat.com>
Wed, 14 Jan 2015 03:21:25 +0000 (19:21 -0800)
Amplify small source changes.

Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
src/rgw/rgw_rados.cc

index 149e7347de7215a04b0dd66095b358eebe802020..135e3cd7ee849b736090b9ecf24defc124ee3464 100644 (file)
@@ -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;