From: Radoslaw Zarzynski Date: Wed, 21 May 2025 14:31:36 +0000 (+0000) Subject: crimson/osd: PGBackend::_read() takes object_size for the sake of FastEC X-Git-Tag: v21.0.0~3^2~25 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=5cd0a4ce3d755bcb02f5f64eca8a86c92d8a007f;p=ceph.git crimson/osd: PGBackend::_read() takes object_size for the sake of FastEC Signed-off-by: Radoslaw Zarzynski --- diff --git a/src/crimson/osd/pg_backend.cc b/src/crimson/osd/pg_backend.cc index ce18753a9bf4..260d11b7d20f 100644 --- a/src/crimson/osd/pg_backend.cc +++ b/src/crimson/osd/pg_backend.cc @@ -235,7 +235,7 @@ PGBackend::read(const ObjectState& os, OSDOp& osd_op, return read_errorator::now(); } } - return _read(oi.soid, offset, length, op.flags).safe_then_interruptible_tuple( + return _read(oi.soid, oi.size, offset, length, op.flags).safe_then_interruptible_tuple( [&delta_stats, &oi, &osd_op](auto&& bl) -> read_errorator::future<> { if (!_read_verify_data(oi, bl)) { // crc mismatches @@ -380,7 +380,7 @@ PGBackend::checksum(const ObjectState& os, OSDOp& osd_op) } // read the chunk to be checksum'ed - return _read(os.oi.soid, checksum.offset, checksum.length, osd_op.op.flags) + return _read(os.oi.soid, os.oi.size, checksum.offset, checksum.length, osd_op.op.flags) .safe_then_interruptible( [&osd_op](auto&& read_bl) mutable -> checksum_errorator::future<> { auto& checksum = osd_op.op.checksum; @@ -437,7 +437,7 @@ PGBackend::cmp_ext(const ObjectState& os, OSDOp& osd_op) } else if (!os.exists || os.oi.is_whiteout()) { logger().debug("{}: {} DNE", __func__, os.oi.soid); } else { - read_ext = _read(os.oi.soid, op.extent.offset, ext_len, 0); + read_ext = _read(os.oi.soid, os.oi.size, op.extent.offset, ext_len, 0); } return read_ext.safe_then_interruptible([&osd_op](auto&& read_bl) -> cmp_ext_errorator::future<> { @@ -1823,7 +1823,7 @@ PGBackend::tmapup_iertr::future<> PGBackend::tmapup( logger().debug("PGBackend::tmapup: {}", os.oi.soid); return PGBackend::write_iertr::now( ).si_then([this, &os] { - return _read(os.oi.soid, 0, os.oi.size, 0); + return _read(os.oi.soid, os.oi.size, 0, os.oi.size, 0); }).handle_error_interruptible( crimson::ct_error::enoent::handle([](auto &) { return seastar::make_ready_future(); @@ -1880,7 +1880,7 @@ PGBackend::read_ierrorator::future<> PGBackend::tmapget( return crimson::ct_error::enoent::make(); } - return _read(oi.soid, 0, oi.size, 0).safe_then_interruptible_tuple( + return _read(oi.soid, os.oi.size, 0, oi.size, 0).safe_then_interruptible_tuple( [&delta_stats, &osd_op](auto&& bl) -> read_errorator::future<> { logger().debug("PGBackend::tmapget: data length: {}", bl.length()); osd_op.op.extent.length = bl.length(); diff --git a/src/crimson/osd/pg_backend.h b/src/crimson/osd/pg_backend.h index 01ce4d72507a..71b72c2d1a17 100644 --- a/src/crimson/osd/pg_backend.h +++ b/src/crimson/osd/pg_backend.h @@ -470,6 +470,7 @@ public: private: virtual ll_read_ierrorator::future _read( const hobject_t& hoid, + size_t object_size, size_t offset, size_t length, uint32_t flags) = 0; diff --git a/src/crimson/osd/replicated_backend.cc b/src/crimson/osd/replicated_backend.cc index 4f026e23b05a..1ef711c1f583 100644 --- a/src/crimson/osd/replicated_backend.cc +++ b/src/crimson/osd/replicated_backend.cc @@ -39,10 +39,12 @@ ReplicatedBackend::ReplicatedBackend(pg_t pgid, ReplicatedBackend::ll_read_ierrorator::future ReplicatedBackend::_read(const hobject_t& hoid, + const uint64_t object_size, const uint64_t off, const uint64_t len, const uint32_t flags) { + std::ignore = object_size; return crimson::os::with_store<&crimson::os::FuturizedStore::Shard::read>( store, coll, ghobject_t{hoid}, off, len, flags); } diff --git a/src/crimson/osd/replicated_backend.h b/src/crimson/osd/replicated_backend.h index d1e2cef732fc..7bf067ffc71c 100644 --- a/src/crimson/osd/replicated_backend.h +++ b/src/crimson/osd/replicated_backend.h @@ -36,8 +36,11 @@ public: void on_actingset_changed(bool same_primary) final; private: ll_read_ierrorator::future - _read(const hobject_t& hoid, uint64_t off, - uint64_t len, uint32_t flags) override; + _read(const hobject_t& hoid, + uint64_t object_size, + uint64_t off, + uint64_t len, + uint32_t flags) final; rep_op_fut_t submit_transaction( const std::set &pg_shards, crimson::osd::ObjectContextRef&& obc,