]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.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, 24 Mar 2026 16:06:24 +0000 (16:06 +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 ce18753a9bf4b6c276dd58bee26d36e6dd2efceb..260d11b7d20fa9fb631c51f7d9eca3b4e34ac40a 100644 (file)
@@ -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<bufferlist>();
@@ -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();
index 01ce4d72507a2954f1810cd5e505dfc22c971b94..71b72c2d1a17d9f188fc02d6b006a61b2e2e7c93 100644 (file)
@@ -470,6 +470,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 4f026e23b05a795b0ef3c927e5c7f268f949f078..1ef711c1f5838c95cbc416937f6002238877a17d 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 crimson::os::with_store<&crimson::os::FuturizedStore::Shard::read>(
     store, 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,