Commit ea0dec54 authored by Vladimir Bashkirtsev's avatar Vladimir Bashkirtsev

Fixed ErasureCodeShec bug

parent 3d359cec
diff -uNr ceph-15.2.4/src/erasure-code/shec/ErasureCodeShec.cc ceph-15.2.4-fix_ErasureCodeShec/src/erasure-code/shec/ErasureCodeShec.cc diff -uNr ceph-15.2.4/src/erasure-code/shec/ErasureCodeShec.cc ceph-15.2.4-fix_ErasureCodeShec/src/erasure-code/shec/ErasureCodeShec.cc
--- ceph-15.2.4/src/erasure-code/shec/ErasureCodeShec.cc 2020-07-01 01:10:51.000000000 +0930 --- ceph-15.2.4/src/erasure-code/shec/ErasureCodeShec.cc 2020-07-01 01:10:51.000000000 +0930
+++ ceph-15.2.4-fix_ErasureCodeShec/src/erasure-code/shec/ErasureCodeShec.cc 2020-11-14 00:46:20.029488684 +1030 +++ ceph-15.2.4-fix_ErasureCodeShec/src/erasure-code/shec/ErasureCodeShec.cc 2020-12-27 14:09:11.480903740 +1030
@@ -197,7 +197,10 @@ @@ -179,6 +179,10 @@
if (!decoded || !decoded->empty()){
return -EINVAL;
} }
unsigned int k = get_data_chunk_count(); + if (!want_to_read.empty() && chunks.empty()) {
unsigned int m = get_chunk_count() - k; + // i need to get the blocksize from the first element of chunks
- unsigned blocksize = (*chunks.begin()).second.length(); + return -1;
+ unsigned blocksize = 0;
+ if (chunks.size() > 0) {
+ blocksize = (*chunks.begin()).second.length();
+ } + }
for (unsigned int i = 0; i < k + m; i++) {
if (chunks.find(i) == chunks.end()) { have.reserve(chunks.size());
bufferlist tmp; for (map<int, bufferlist>::const_iterator i = chunks.begin();
diff -uNr ceph-15.2.4/src/test/erasure-code/TestErasureCodeShec_arguments.cc ceph-15.2.4-fix_ErasureCodeShec/src/test/erasure-code/TestErasureCodeShec_arguments.cc
--- ceph-15.2.4/src/test/erasure-code/TestErasureCodeShec_arguments.cc 2020-07-01 01:10:51.000000000 +0930
+++ ceph-15.2.4-fix_ErasureCodeShec/src/test/erasure-code/TestErasureCodeShec_arguments.cc 2020-12-27 14:09:11.480903740 +1030
@@ -323,7 +323,6 @@
EXPECT_EQ(-EIO, result);
EXPECT_EQ(0u, minimum_chunks.size());
EXPECT_EQ(-1, dresult);
- EXPECT_EQ(shec->get_chunk_count(), decoded.size());
if (result != -EIO || dresult != -1) {
++unexpected_count;
}
@@ -359,7 +358,6 @@
EXPECT_EQ(-EIO, result);
EXPECT_EQ(0u, minimum_chunks.size());
EXPECT_EQ(-1, dresult);
- EXPECT_EQ(shec->get_chunk_count(), decoded.size());
if (result != -EIO || dresult != -1) {
++unexpected_count;
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment