]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
crimson/osd: PGBackend::_read() takes object_size for the sake of FastEC
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Wed, 21 May 2025 14:31:36 +0000 (14:31 +0000)
committerRadoslaw Zarzynski <rzarzyns@redhat.com>
Tue, 27 Jan 2026 19:42:59 +0000 (19:42 +0000)
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
src/crimson/osd/pg_backend.cc
src/crimson/osd/pg_backend.h
src/crimson/osd/replicated_backend.cc
src/crimson/osd/replicated_backend.h

index eab808c04a6f8cb6b880b75d89b793efc6df822e..92611a73fadfe398f70ac38c463460c01b8947fe 100644 (file)
@@ -232,7 +232,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
@@ -371,7 +371,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;
@@ -428,7 +428,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<> {
@@ -1801,7 +1801,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<bufferlist>();
@@ -1858,7 +1858,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();
index e97795024dba3c36e52dc0e0ce3fce5a8e2060a5..09be7fcf21b3c5eb935cd8bf22cf7ccc12c87cd5 100644 (file)
@@ -469,6 +469,7 @@ public:
 private:
   virtual ll_read_ierrorator::future<ceph::bufferlist> _read(
     const hobject_t& hoid,
+    size_t object_size,
     size_t offset,
     size_t length,
     uint32_t flags) = 0;
index 1c8d5e90351a4452043b09a0996221f9519eb298..e3d2414a5d67441c23af7457cf343f5f30dc2245 100644 (file)
@@ -39,10 +39,12 @@ ReplicatedBackend::ReplicatedBackend(pg_t pgid,
 
 ReplicatedBackend::ll_read_ierrorator::future<ceph::bufferlist>
 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 store->read(coll, ghobject_t{hoid}, off, len, flags);
 }
 
index d1e2cef732fcb1ea3751c1698df562c8771d7537..7bf067ffc71c01f718ec4300972fc23e8293bd22 100644 (file)
@@ -36,8 +36,11 @@ public:
   void on_actingset_changed(bool same_primary) final;
 private:
   ll_read_ierrorator::future<ceph::bufferlist>
-    _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_shard_t> &pg_shards,
     crimson::osd::ObjectContextRef&& obc,