summaryrefslogtreecommitdiffstats
path: root/fs/ceph/locks.c
diff options
context:
space:
mode:
authorIlya Dryomov <ilya.dryomov@inktank.com>2014-03-19 16:58:36 +0200
committerSage Weil <sage@inktank.com>2014-04-04 21:07:23 -0700
commit48a163dbb517eba13643bf404a0d695c1ab0a60d (patch)
treef935878dc2fe37083044356cc79ede2f14bea764 /fs/ceph/locks.c
parentcc48c3e85f7fc48092f2e9874f1a07dd997d9184 (diff)
downloadop-kernel-dev-48a163dbb517eba13643bf404a0d695c1ab0a60d.zip
op-kernel-dev-48a163dbb517eba13643bf404a0d695c1ab0a60d.tar.gz
crush: fix off-by-one errors in total_tries refactor
Back in 27f4d1f6bc32c2ed7b2c5080cbd58b14df622607 we refactored the CRUSH code to allow adjustment of the retry counts on a per-pool basis. That commit had an off-by-one bug: the previous "tries" counter was a *retry* count, not a *try* count, but the new code was passing in 1 meaning there should be no retries. Fix the ftotal vs tries comparison to use < instead of <= to fix the problem. Note that the original code used <= here, which means the global "choose_total_tries" tunable is actually counting retries. Compensate for that by adding 1 in crush_do_rule when we pull the tunable into the local variable. This was noticed looking at output from a user provided osdmap. Unfortunately the map doesn't illustrate the change in mapping behavior and I haven't managed to construct one yet that does. Inspection of the crush debug output now aligns with prior versions, though. Reflects ceph.git commit 795704fd615f0b008dcc81aa088a859b2d075138. Signed-off-by: Ilya Dryomov <ilya.dryomov@inktank.com> Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
Diffstat (limited to 'fs/ceph/locks.c')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud