diff options
author | Ilya Dryomov <ilya.dryomov@inktank.com> | 2014-05-09 18:27:34 +0400 |
---|---|---|
committer | Ilya Dryomov <ilya.dryomov@inktank.com> | 2014-05-16 21:29:55 +0400 |
commit | f140662f35a7332b5c3188ee667856323783ed5a (patch) | |
tree | 483dab63de78cfb269332e5b5792811ad5a890b5 | |
parent | 178eda29ca721842f2146378e73d43e0044c4166 (diff) | |
download | op-kernel-dev-f140662f35a7332b5c3188ee667856323783ed5a.zip op-kernel-dev-f140662f35a7332b5c3188ee667856323783ed5a.tar.gz |
crush: decode and initialize chooseleaf_vary_r
Commit e2b149cc4ba0 ("crush: add chooseleaf_vary_r tunable") added the
crush_map::chooseleaf_vary_r field but missed the decode part. This
lead to misdirected requests caused by incorrect raw crush mapping
sets.
Fixes: http://tracker.ceph.com/issues/8226
Reported-and-Tested-by: Dmitry Smirnov <onlyjob@member.fsf.org>
Signed-off-by: Ilya Dryomov <ilya.dryomov@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
-rw-r--r-- | net/ceph/osdmap.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/net/ceph/osdmap.c b/net/ceph/osdmap.c index 8b8a5a2..c547e46 100644 --- a/net/ceph/osdmap.c +++ b/net/ceph/osdmap.c @@ -329,6 +329,11 @@ static struct crush_map *crush_decode(void *pbyval, void *end) dout("crush decode tunable chooseleaf_descend_once = %d", c->chooseleaf_descend_once); + ceph_decode_need(p, end, sizeof(u8), done); + c->chooseleaf_vary_r = ceph_decode_8(p); + dout("crush decode tunable chooseleaf_vary_r = %d", + c->chooseleaf_vary_r); + done: dout("crush_decode success\n"); return c; |