Bug #9572
erasure-code: BlaumRoth default encoding regression
100%
Description
Fixing the bug on BlaumRoth w constraint changes the encoding and it is impossible read content encoded with Firefly with Giant
Associated revisions
erasure-code: restore jerasure BlaumRoth default w
Changing from W=7 to W=6 by default for the BlaumRoth technique is
correct but introduces a regression. The content that was encoded with
the previous version cannot be read again. Although the prime(w+1)
constraint was not obeyed by W=7, the encoded content was useable and
should keep being readable.
The W=7 remains the default for backward compatibility and an exception
to the prime(w+1) check.
http://tracker.ceph.com/issues/9572 Fixes: #9572
Signed-off-by: Loic Dachary <loic-201408@dachary.org>
History
#1 Updated by Loïc Dachary over 9 years ago
- Status changed from 12 to In Progress
#2 Updated by Loïc Dachary over 9 years ago
- Status changed from In Progress to 7
- % Done changed from 0 to 80
#3 Updated by Loïc Dachary over 9 years ago
- Status changed from 7 to Fix Under Review
#4 Updated by Loïc Dachary over 9 years ago
Brute force check of w=7 with all possible values for k prove it allows recovering all scenarios.
m=2 ; w=7 ; for k in $(seq 2 $w) ; do for erasures in $(seq 1 $m) ; do cmd="./ceph_erasure_code_benchmark --verbose --plugin jerasure --workload decode --iterations 1 --size 4096 --erasures $erasures --erasures-generation exhaustive --parameter w=$w --parameter k=$k --parameter m=$m --parameter technique=blaum_roth" ; echo $cmd ; $cmd ; done ; done ./ceph_erasure_code_benchmark --verbose --plugin jerasure --workload decode --iterations 1 --size 4096 --erasures 1 --erasures-generation exhaustive --parameter w=7 --parameter k=2 --parameter m=2 --parameter technique=blaum_roth chunks (0) 1 2 3 (X) is an erased chunk chunks 0 (1) 2 3 (X) is an erased chunk chunks 0 1 (2) 3 (X) is an erased chunk chunks 0 1 2 (3) (X) is an erased chunk 0.000269 4 ./ceph_erasure_code_benchmark --verbose --plugin jerasure --workload decode --iterations 1 --size 4096 --erasures 2 --erasures-generation exhaustive --parameter w=7 --parameter k=2 --parameter m=2 --parameter technique=blaum_roth chunks (0) (1) 2 3 (X) is an erased chunk chunks (0) 1 (2) 3 (X) is an erased chunk chunks (0) 1 2 (3) (X) is an erased chunk chunks 0 (1) (2) 3 (X) is an erased chunk chunks 0 (1) 2 (3) (X) is an erased chunk chunks 0 1 (2) (3) (X) is an erased chunk 0.000600 4 ./ceph_erasure_code_benchmark --verbose --plugin jerasure --workload decode --iterations 1 --size 4096 --erasures 1 --erasures-generation exhaustive --parameter w=7 --parameter k=3 --parameter m=2 --parameter technique=blaum_roth chunks (0) 1 2 3 4 (X) is an erased chunk chunks 0 (1) 2 3 4 (X) is an erased chunk chunks 0 1 (2) 3 4 (X) is an erased chunk chunks 0 1 2 (3) 4 (X) is an erased chunk chunks 0 1 2 3 (4) (X) is an erased chunk 0.000419 4 ./ceph_erasure_code_benchmark --verbose --plugin jerasure --workload decode --iterations 1 --size 4096 --erasures 2 --erasures-generation exhaustive --parameter w=7 --parameter k=3 --parameter m=2 --parameter technique=blaum_roth chunks (0) (1) 2 3 4 (X) is an erased chunk chunks (0) 1 (2) 3 4 (X) is an erased chunk chunks (0) 1 2 (3) 4 (X) is an erased chunk chunks (0) 1 2 3 (4) (X) is an erased chunk chunks 0 (1) (2) 3 4 (X) is an erased chunk chunks 0 (1) 2 (3) 4 (X) is an erased chunk chunks 0 (1) 2 3 (4) (X) is an erased chunk chunks 0 1 (2) (3) 4 (X) is an erased chunk chunks 0 1 (2) 3 (4) (X) is an erased chunk chunks 0 1 2 (3) (4) (X) is an erased chunk 0.001462 4 ./ceph_erasure_code_benchmark --verbose --plugin jerasure --workload decode --iterations 1 --size 4096 --erasures 1 --erasures-generation exhaustive --parameter w=7 --parameter k=4 --parameter m=2 --parameter technique=blaum_roth chunks (0) 1 2 3 4 5 (X) is an erased chunk chunks 0 (1) 2 3 4 5 (X) is an erased chunk chunks 0 1 (2) 3 4 5 (X) is an erased chunk chunks 0 1 2 (3) 4 5 (X) is an erased chunk chunks 0 1 2 3 (4) 5 (X) is an erased chunk chunks 0 1 2 3 4 (5) (X) is an erased chunk 0.000651 4 ./ceph_erasure_code_benchmark --verbose --plugin jerasure --workload decode --iterations 1 --size 4096 --erasures 2 --erasures-generation exhaustive --parameter w=7 --parameter k=4 --parameter m=2 --parameter technique=blaum_roth chunks (0) (1) 2 3 4 5 (X) is an erased chunk chunks (0) 1 (2) 3 4 5 (X) is an erased chunk chunks (0) 1 2 (3) 4 5 (X) is an erased chunk chunks (0) 1 2 3 (4) 5 (X) is an erased chunk chunks (0) 1 2 3 4 (5) (X) is an erased chunk chunks 0 (1) (2) 3 4 5 (X) is an erased chunk chunks 0 (1) 2 (3) 4 5 (X) is an erased chunk chunks 0 (1) 2 3 (4) 5 (X) is an erased chunk chunks 0 (1) 2 3 4 (5) (X) is an erased chunk chunks 0 1 (2) (3) 4 5 (X) is an erased chunk chunks 0 1 (2) 3 (4) 5 (X) is an erased chunk chunks 0 1 (2) 3 4 (5) (X) is an erased chunk chunks 0 1 2 (3) (4) 5 (X) is an erased chunk chunks 0 1 2 (3) 4 (5) (X) is an erased chunk chunks 0 1 2 3 (4) (5) (X) is an erased chunk 0.003021 4 ./ceph_erasure_code_benchmark --verbose --plugin jerasure --workload decode --iterations 1 --size 4096 --erasures 1 --erasures-generation exhaustive --parameter w=7 --parameter k=5 --parameter m=2 --parameter technique=blaum_roth chunks (0) 1 2 3 4 5 6 (X) is an erased chunk chunks 0 (1) 2 3 4 5 6 (X) is an erased chunk chunks 0 1 (2) 3 4 5 6 (X) is an erased chunk chunks 0 1 2 (3) 4 5 6 (X) is an erased chunk chunks 0 1 2 3 (4) 5 6 (X) is an erased chunk chunks 0 1 2 3 4 (5) 6 (X) is an erased chunk chunks 0 1 2 3 4 5 (6) (X) is an erased chunk 0.001386 4 ./ceph_erasure_code_benchmark --verbose --plugin jerasure --workload decode --iterations 1 --size 4096 --erasures 2 --erasures-generation exhaustive --parameter w=7 --parameter k=5 --parameter m=2 --parameter technique=blaum_roth chunks (0) (1) 2 3 4 5 6 (X) is an erased chunk chunks (0) 1 (2) 3 4 5 6 (X) is an erased chunk chunks (0) 1 2 (3) 4 5 6 (X) is an erased chunk chunks (0) 1 2 3 (4) 5 6 (X) is an erased chunk chunks (0) 1 2 3 4 (5) 6 (X) is an erased chunk chunks (0) 1 2 3 4 5 (6) (X) is an erased chunk chunks 0 (1) (2) 3 4 5 6 (X) is an erased chunk chunks 0 (1) 2 (3) 4 5 6 (X) is an erased chunk chunks 0 (1) 2 3 (4) 5 6 (X) is an erased chunk chunks 0 (1) 2 3 4 (5) 6 (X) is an erased chunk chunks 0 (1) 2 3 4 5 (6) (X) is an erased chunk chunks 0 1 (2) (3) 4 5 6 (X) is an erased chunk chunks 0 1 (2) 3 (4) 5 6 (X) is an erased chunk chunks 0 1 (2) 3 4 (5) 6 (X) is an erased chunk chunks 0 1 (2) 3 4 5 (6) (X) is an erased chunk chunks 0 1 2 (3) (4) 5 6 (X) is an erased chunk chunks 0 1 2 (3) 4 (5) 6 (X) is an erased chunk chunks 0 1 2 (3) 4 5 (6) (X) is an erased chunk chunks 0 1 2 3 (4) (5) 6 (X) is an erased chunk chunks 0 1 2 3 (4) 5 (6) (X) is an erased chunk chunks 0 1 2 3 4 (5) (6) (X) is an erased chunk 0.005470 4 ./ceph_erasure_code_benchmark --verbose --plugin jerasure --workload decode --iterations 1 --size 4096 --erasures 1 --erasures-generation exhaustive --parameter w=7 --parameter k=6 --parameter m=2 --parameter technique=blaum_roth chunks (0) 1 2 3 4 5 6 7 (X) is an erased chunk chunks 0 (1) 2 3 4 5 6 7 (X) is an erased chunk chunks 0 1 (2) 3 4 5 6 7 (X) is an erased chunk chunks 0 1 2 (3) 4 5 6 7 (X) is an erased chunk chunks 0 1 2 3 (4) 5 6 7 (X) is an erased chunk chunks 0 1 2 3 4 (5) 6 7 (X) is an erased chunk chunks 0 1 2 3 4 5 (6) 7 (X) is an erased chunk chunks 0 1 2 3 4 5 6 (7) (X) is an erased chunk 0.001329 4 ./ceph_erasure_code_benchmark --verbose --plugin jerasure --workload decode --iterations 1 --size 4096 --erasures 2 --erasures-generation exhaustive --parameter w=7 --parameter k=6 --parameter m=2 --parameter technique=blaum_roth chunks (0) (1) 2 3 4 5 6 7 (X) is an erased chunk chunks (0) 1 (2) 3 4 5 6 7 (X) is an erased chunk chunks (0) 1 2 (3) 4 5 6 7 (X) is an erased chunk chunks (0) 1 2 3 (4) 5 6 7 (X) is an erased chunk chunks (0) 1 2 3 4 (5) 6 7 (X) is an erased chunk chunks (0) 1 2 3 4 5 (6) 7 (X) is an erased chunk chunks (0) 1 2 3 4 5 6 (7) (X) is an erased chunk chunks 0 (1) (2) 3 4 5 6 7 (X) is an erased chunk chunks 0 (1) 2 (3) 4 5 6 7 (X) is an erased chunk chunks 0 (1) 2 3 (4) 5 6 7 (X) is an erased chunk chunks 0 (1) 2 3 4 (5) 6 7 (X) is an erased chunk chunks 0 (1) 2 3 4 5 (6) 7 (X) is an erased chunk chunks 0 (1) 2 3 4 5 6 (7) (X) is an erased chunk chunks 0 1 (2) (3) 4 5 6 7 (X) is an erased chunk chunks 0 1 (2) 3 (4) 5 6 7 (X) is an erased chunk chunks 0 1 (2) 3 4 (5) 6 7 (X) is an erased chunk chunks 0 1 (2) 3 4 5 (6) 7 (X) is an erased chunk chunks 0 1 (2) 3 4 5 6 (7) (X) is an erased chunk chunks 0 1 2 (3) (4) 5 6 7 (X) is an erased chunk chunks 0 1 2 (3) 4 (5) 6 7 (X) is an erased chunk chunks 0 1 2 (3) 4 5 (6) 7 (X) is an erased chunk chunks 0 1 2 (3) 4 5 6 (7) (X) is an erased chunk chunks 0 1 2 3 (4) (5) 6 7 (X) is an erased chunk chunks 0 1 2 3 (4) 5 (6) 7 (X) is an erased chunk chunks 0 1 2 3 (4) 5 6 (7) (X) is an erased chunk chunks 0 1 2 3 4 (5) (6) 7 (X) is an erased chunk chunks 0 1 2 3 4 (5) 6 (7) (X) is an erased chunk chunks 0 1 2 3 4 5 (6) (7) (X) is an erased chunk 0.008716 4 ./ceph_erasure_code_benchmark --verbose --plugin jerasure --workload decode --iterations 1 --size 4096 --erasures 1 --erasures-generation exhaustive --parameter w=7 --parameter k=7 --parameter m=2 --parameter technique=blaum_roth chunks (0) 1 2 3 4 5 6 7 8 (X) is an erased chunk chunks 0 (1) 2 3 4 5 6 7 8 (X) is an erased chunk chunks 0 1 (2) 3 4 5 6 7 8 (X) is an erased chunk chunks 0 1 2 (3) 4 5 6 7 8 (X) is an erased chunk chunks 0 1 2 3 (4) 5 6 7 8 (X) is an erased chunk chunks 0 1 2 3 4 (5) 6 7 8 (X) is an erased chunk chunks 0 1 2 3 4 5 (6) 7 8 (X) is an erased chunk chunks 0 1 2 3 4 5 6 (7) 8 (X) is an erased chunk chunks 0 1 2 3 4 5 6 7 (8) (X) is an erased chunk 0.002602 4 ./ceph_erasure_code_benchmark --verbose --plugin jerasure --workload decode --iterations 1 --size 4096 --erasures 2 --erasures-generation exhaustive --parameter w=7 --parameter k=7 --parameter m=2 --parameter technique=blaum_roth chunks (0) (1) 2 3 4 5 6 7 8 (X) is an erased chunk chunks (0) 1 (2) 3 4 5 6 7 8 (X) is an erased chunk chunks (0) 1 2 (3) 4 5 6 7 8 (X) is an erased chunk chunks (0) 1 2 3 (4) 5 6 7 8 (X) is an erased chunk chunks (0) 1 2 3 4 (5) 6 7 8 (X) is an erased chunk chunks (0) 1 2 3 4 5 (6) 7 8 (X) is an erased chunk chunks (0) 1 2 3 4 5 6 (7) 8 (X) is an erased chunk chunks (0) 1 2 3 4 5 6 7 (8) (X) is an erased chunk chunks 0 (1) (2) 3 4 5 6 7 8 (X) is an erased chunk chunks 0 (1) 2 (3) 4 5 6 7 8 (X) is an erased chunk chunks 0 (1) 2 3 (4) 5 6 7 8 (X) is an erased chunk chunks 0 (1) 2 3 4 (5) 6 7 8 (X) is an erased chunk chunks 0 (1) 2 3 4 5 (6) 7 8 (X) is an erased chunk chunks 0 (1) 2 3 4 5 6 (7) 8 (X) is an erased chunk chunks 0 (1) 2 3 4 5 6 7 (8) (X) is an erased chunk chunks 0 1 (2) (3) 4 5 6 7 8 (X) is an erased chunk chunks 0 1 (2) 3 (4) 5 6 7 8 (X) is an erased chunk chunks 0 1 (2) 3 4 (5) 6 7 8 (X) is an erased chunk chunks 0 1 (2) 3 4 5 (6) 7 8 (X) is an erased chunk chunks 0 1 (2) 3 4 5 6 (7) 8 (X) is an erased chunk chunks 0 1 (2) 3 4 5 6 7 (8) (X) is an erased chunk chunks 0 1 2 (3) (4) 5 6 7 8 (X) is an erased chunk chunks 0 1 2 (3) 4 (5) 6 7 8 (X) is an erased chunk chunks 0 1 2 (3) 4 5 (6) 7 8 (X) is an erased chunk chunks 0 1 2 (3) 4 5 6 (7) 8 (X) is an erased chunk chunks 0 1 2 (3) 4 5 6 7 (8) (X) is an erased chunk chunks 0 1 2 3 (4) (5) 6 7 8 (X) is an erased chunk chunks 0 1 2 3 (4) 5 (6) 7 8 (X) is an erased chunk chunks 0 1 2 3 (4) 5 6 (7) 8 (X) is an erased chunk chunks 0 1 2 3 (4) 5 6 7 (8) (X) is an erased chunk chunks 0 1 2 3 4 (5) (6) 7 8 (X) is an erased chunk chunks 0 1 2 3 4 (5) 6 (7) 8 (X) is an erased chunk chunks 0 1 2 3 4 (5) 6 7 (8) (X) is an erased chunk chunks 0 1 2 3 4 5 (6) (7) 8 (X) is an erased chunk chunks 0 1 2 3 4 5 (6) 7 (8) (X) is an erased chunk chunks 0 1 2 3 4 5 6 (7) (8) (X) is an erased chunk 0.013623 4
#5 Updated by Loïc Dachary over 9 years ago
- Status changed from Fix Under Review to Resolved
- % Done changed from 80 to 100