Преглед изворни кода

crush: do is_out test only if we do not collide

The is_out() test may require an additional hashing operation, so we
should skip it whenever possible.

Reflects ceph.git commit db107cc7f15cf2481894add325dc93e33479f529.

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Ilya Dryomov пре 8 година
родитељ
комит
98ba6af728
1 измењених фајлова са 1 додато и 3 уклоњено
  1. 1 3
      net/ceph/crush/mapper.c

+ 1 - 3
net/ceph/crush/mapper.c

@@ -552,14 +552,12 @@ static int crush_choose_firstn(const struct crush_map *map,
 					}
 				}
 
-				if (!reject) {
+				if (!reject && !collide) {
 					/* out? */
 					if (itemtype == 0)
 						reject = is_out(map, weight,
 								weight_max,
 								item, x);
-					else
-						reject = 0;
 				}
 
 reject: