mirror of
https://github.com/ceph/ceph
synced 2025-03-06 16:28:28 +00:00
Merge pull request #25595 from rzarzynski/wip-ec-drop_bl_crosstalk_dependency
ec: lrc doesn't depend on crosstalks between bufferlists anymore. Reviewed-by: Sage Weil <sage@redhat.com>
This commit is contained in:
commit
b5cb2115ba
@ -754,16 +754,18 @@ int ErasureCodeLrc::encode_chunks(const set<int> &want_to_encode,
|
||||
set<int> layer_want_to_encode;
|
||||
map<int, bufferlist> layer_encoded;
|
||||
int j = 0;
|
||||
for (vector<int>::const_iterator c = layer.chunks.begin();
|
||||
c != layer.chunks.end();
|
||||
++c) {
|
||||
layer_encoded[j] = (*encoded)[*c];
|
||||
if (want_to_encode.find(*c) != want_to_encode.end())
|
||||
for (const auto& c : layer.chunks) {
|
||||
std::swap(layer_encoded[j], (*encoded)[c]);
|
||||
if (want_to_encode.find(c) != want_to_encode.end())
|
||||
layer_want_to_encode.insert(j);
|
||||
j++;
|
||||
}
|
||||
int err = layer.erasure_code->encode_chunks(layer_want_to_encode,
|
||||
&layer_encoded);
|
||||
j = 0;
|
||||
for (const auto& c : layer.chunks) {
|
||||
std::swap(layer_encoded[j++], (*encoded)[c]);
|
||||
}
|
||||
if (err) {
|
||||
derr << __func__ << " layer " << layer.chunks_map
|
||||
<< " failed with " << err << " trying to encode "
|
||||
|
Loading…
Reference in New Issue
Block a user