| 797 | } |
| 798 | |
| 799 | int ErasureCodeClay::decode_uncoupled(const set<int>& erased_chunks, int z, int sc_size) |
| 800 | { |
| 801 | map<int, bufferlist> known_subchunks; |
| 802 | map<int, bufferlist> all_subchunks; |
| 803 | |
| 804 | for (int i = 0; i < q*t; i++) { |
| 805 | if (erased_chunks.count(i) == 0) { |
| 806 | known_subchunks[i].substr_of(U_buf[i], z*sc_size, sc_size); |
| 807 | all_subchunks[i] = known_subchunks[i]; |
| 808 | } else { |
| 809 | all_subchunks[i].substr_of(U_buf[i], z*sc_size, sc_size); |
| 810 | } |
| 811 | all_subchunks[i].rebuild_aligned_size_and_memory(sc_size, SIMD_ALIGN); |
| 812 | assert(all_subchunks[i].is_contiguous()); |
| 813 | } |
| 814 | |
| 815 | mds.erasure_code->decode_chunks(erased_chunks, known_subchunks, &all_subchunks); |
| 816 | return 0; |
| 817 | } |
| 818 | |
| 819 | void ErasureCodeClay::set_planes_sequential_decoding_order(int* order, set<int>& erasures) { |
| 820 | int z_vec[t]; |
nothing calls this directly
no test coverage detected