Project

General

Profile

Bug #9572

erasure-code: BlaumRoth default encoding regression

Added by Loic Dachary about 5 years ago. Updated about 5 years ago.

Status:
Resolved
Priority:
Urgent
Assignee:
Category:
OSD
Target version:
% Done:

100%

Source:
other
Tags:
Backport:
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature:

Description

Fixing the bug on BlaumRoth w constraint changes the encoding and it is impossible read content encoded with Firefly with Giant

Associated revisions

Revision f51d21b5 (diff)
Added by Loic Dachary about 5 years ago

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 <>

History

#1 Updated by Loic Dachary about 5 years ago

  • Status changed from 12 to In Progress

#2 Updated by Loic Dachary about 5 years ago

  • Status changed from In Progress to 7
  • % Done changed from 0 to 80

#3 Updated by Loic Dachary about 5 years ago

  • Status changed from 7 to Fix Under Review

#4 Updated by Loic Dachary about 5 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 Loic Dachary about 5 years ago

  • Status changed from Fix Under Review to Resolved
  • % Done changed from 80 to 100

Also available in: Atom PDF