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>
This commit is contained in:
Ilya Dryomov 2017-02-16 15:21:15 +01:00
parent df963ea8a0
commit 98ba6af728

View File

@ -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: