crush: avoid recursion if we have already collided
authorSage Weil <sage@inktank.com>
Wed, 16 Jan 2013 02:49:09 +0000 (18:49 -0800)
committerAlex Elder <elder@inktank.com>
Thu, 17 Jan 2013 18:42:39 +0000 (12:42 -0600)
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>
net/ceph/crush/mapper.c

index 96c8a58..cbd06a9 100644 (file)
@@ -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],