req.shard_want_to_read,
req.object_size);
ceph_assert( r == 0 );
-
- #if DEBUG_EC_BUFFERS
- dout(20) << __func__ << ": after decode: " << res.buffers_read.debug_string(2048, 8) << dendl;
- #endif
+ dout(30) << __func__ << ": after decode: "
+ << res.buffers_read.debug_string(2048, 8)
+ << dendl;
for (auto &&read: req.to_read) {
- result.insert(read.offset, read.size,
- res.buffers_read.get_ro_buffer(read.offset, read.size));
+ // Return a buffer containing both data and parity
+ // if the parity read inject is set
+ if (cct->_conf->bluestore_debug_inject_read_err &&
+ ECInject::test_parity_read(hoid)) {
+ bufferlist data_and_parity;
+ read_pipeline.create_parity_read_buffer(res.buffers_read, read, &data_and_parity);
+ result.insert(read.offset, data_and_parity.length(), data_and_parity);
+ } else {
+ result.insert(read.offset, read.size,
+ res.buffers_read.get_ro_buffer(read.offset, read.size));
+ }
}
}
dout(20) << __func__ << " calling complete_object with result="