diff options
author | Ilya Dryomov | 2017-02-16 15:21:15 +0100 |
---|---|---|
committer | Ilya Dryomov | 2017-02-23 22:22:02 +0100 |
commit | 98ba6af728de99953e25e550dbeca588c258ef03 (patch) | |
tree | 3a49891c922e9058f5acbacd7a8b13dfb18c6993 | |
parent | df963ea8a082d31521a120e8e31a29ad8a1dc215 (diff) |
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>
-rw-r--r-- | net/ceph/crush/mapper.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/net/ceph/crush/mapper.c b/net/ceph/crush/mapper.c index 2e31217ccae3..84d2de047865 100644 --- a/net/ceph/crush/mapper.c +++ b/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: |