From: Laura Flores Date: Wed, 9 Jul 2025 15:39:26 +0000 (-0400) Subject: Merge pull request #63873 from aainscow/ec_fixpack_pr X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=38578de6060c8cf93d6c69e2bff7339edb9dfc4b;p=ceph.git Merge pull request #63873 from aainscow/ec_fixpack_pr osd: Multiple fixes to optimized EC and peering --- 38578de6060c8cf93d6c69e2bff7339edb9dfc4b diff --cc src/osd/ECCommon.cc index 3b886806a87dd,22842479cdbbc..06d53bcb8da0b --- a/src/osd/ECCommon.cc +++ b/src/osd/ECCommon.cc @@@ -534,23 -495,13 +533,22 @@@ struct ClientReadCompleter final : ECCo 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="