From: Samuel Just Date: Sat, 1 Feb 2014 04:07:26 +0000 (-0800) Subject: ErasureCodeJerasure: fix alignement issues in encode/decode X-Git-Tag: v0.78~163^2~57 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=44f5d4de2a8c07c7836cbf75a1bfa944ef2758b5;p=ceph.git ErasureCodeJerasure: fix alignement issues in encode/decode Signed-off-by: Samuel Just --- diff --git a/src/erasure-code/jerasure/ErasureCodeJerasure.cc b/src/erasure-code/jerasure/ErasureCodeJerasure.cc index a39ffbeb3a5..9200da25ea7 100644 --- a/src/erasure-code/jerasure/ErasureCodeJerasure.cc +++ b/src/erasure-code/jerasure/ErasureCodeJerasure.cc @@ -113,11 +113,11 @@ int ErasureCodeJerasure::encode(const set &want_to_encode, bufferptr pad(padded_length - in.length()); pad.zero(); out.push_back(pad); - out.rebuild_page_aligned(); } unsigned coding_length = blocksize * m; bufferptr coding(buffer::create_page_aligned(coding_length)); out.push_back(coding); + out.rebuild_page_aligned(); char *chunks[k + m]; for (int i = 0; i < k + m; i++) { bufferlist &chunk = (*encoded)[i]; @@ -145,10 +145,11 @@ int ErasureCodeJerasure::decode(const set &want_to_read, if (chunks.find(i) == chunks.end()) { erasures[erasures_count] = i; erasures_count++; - bufferptr ptr(blocksize); + bufferptr ptr(buffer::create_page_aligned(blocksize)); (*decoded)[i].push_front(ptr); } else { (*decoded)[i] = chunks.find(i)->second; + (*decoded)[i].rebuild_page_aligned(); } if (i < k) data[i] = (*decoded)[i].c_str();