summaryrefslogtreecommitdiffstats
path: root/net/ceph/crush
diff options
context:
space:
mode:
authorIlya Dryomov <ilya.dryomov@inktank.com>2013-12-24 21:19:25 +0200
committerIlya Dryomov <ilya.dryomov@inktank.com>2013-12-31 20:32:17 +0200
commit3102b0a5b4cd63acccac78ca541b73fe28b4faa6 (patch)
tree31b3a5f69f9304fe740ece82e9e06f3dd55645fc /net/ceph/crush
parent9a3b490a20e06368c81d7a81506e99388e733379 (diff)
downloadlinux-3102b0a5b4cd63acccac78ca541b73fe28b4faa6.tar.bz2
crush: add note about r in recursive choose
Reflects ceph.git commit 4551fee9ad89d0427ed865d766d0d44004d3e3e1. Signed-off-by: Ilya Dryomov <ilya.dryomov@inktank.com> Reviewed-by: Sage Weil <sage@inktank.com>
Diffstat (limited to 'net/ceph/crush')
-rw-r--r--net/ceph/crush/mapper.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/net/ceph/crush/mapper.c b/net/ceph/crush/mapper.c
index caeb1066bea3..77b7a73e65cf 100644
--- a/net/ceph/crush/mapper.c
+++ b/net/ceph/crush/mapper.c
@@ -514,6 +514,14 @@ static void crush_choose_indep(const struct crush_map *map,
/* choose through intervening buckets */
for (;;) {
+ /* note: we base the choice on the position
+ * even in the nested call. that means that
+ * if the first layer chooses the same bucket
+ * in a different position, we will tend to
+ * choose a different item in that bucket.
+ * this will involve more devices in data
+ * movement and tend to distribute the load.
+ */
r = rep;
/* be careful */