summaryrefslogtreecommitdiffstats
path: root/net/ceph/crush
diff options
context:
space:
mode:
authorSage Weil2013-01-16 03:49:09 +0100
committerAlex Elder2013-01-17 19:42:39 +0100
commit7d7c1f6136bac00174842f845babe7fb3483724e (patch)
treee4334780995901e60cfacbfc53b5026993fcb02e /net/ceph/crush
parentlibceph: for chooseleaf rules, retry CRUSH map descent from root if leaf is f... (diff)
downloadkernel-qcow2-linux-7d7c1f6136bac00174842f845babe7fb3483724e.tar.gz
kernel-qcow2-linux-7d7c1f6136bac00174842f845babe7fb3483724e.tar.xz
kernel-qcow2-linux-7d7c1f6136bac00174842f845babe7fb3483724e.zip
crush: avoid recursion if we have already collided
This saves us some cycles, but does not affect the placement result at all. This corresponds to ceph.git commit 4abb53d4f. Signed-off-by: Sage Weil <sage@inktank.com>
Diffstat (limited to 'net/ceph/crush')
-rw-r--r--net/ceph/crush/mapper.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/ceph/crush/mapper.c b/net/ceph/crush/mapper.c
index 96c8a58937db..cbd06a91941c 100644
--- a/net/ceph/crush/mapper.c
+++ b/net/ceph/crush/mapper.c
@@ -392,7 +392,7 @@ static int crush_choose(const struct crush_map *map,
}
reject = 0;
- if (recurse_to_leaf) {
+ if (!collide && recurse_to_leaf) {
if (item < 0) {
if (crush_choose(map,
map->buckets[-1-item],