summaryrefslogtreecommitdiff
path: root/net/ceph
diff options
context:
space:
mode:
authorIlya Dryomov <idryomov@gmail.com>2017-02-16 17:21:15 +0300
committerIlya Dryomov <idryomov@gmail.com>2017-02-24 00:22:02 +0300
commit98ba6af728de99953e25e550dbeca588c258ef03 (patch)
tree3a49891c922e9058f5acbacd7a8b13dfb18c6993 /net/ceph
parentdf963ea8a082d31521a120e8e31a29ad8a1dc215 (diff)
downloadlinux-98ba6af728de99953e25e550dbeca588c258ef03.tar.xz
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>
Diffstat (limited to 'net/ceph')
-rw-r--r--net/ceph/crush/mapper.c4
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: