From: Callum James Date: Tue, 21 Apr 2026 10:08:16 +0000 (+0100) Subject: osd: Using objects_read_local instead of objects_read_sync X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c8bdf7384c038328798b4509b84d2db6f9c7c59d;p=ceph.git osd: Using objects_read_local instead of objects_read_sync Signed-off-by: Callum James --- diff --git a/src/osd/ECBackend.cc b/src/osd/ECBackend.cc index 00b0811e58c..588494d7f74 100644 --- a/src/osd/ECBackend.cc +++ b/src/osd/ECBackend.cc @@ -1043,7 +1043,7 @@ int ECBackend::objects_read_local( bufferlist *bl) { if (!sinfo.supports_direct_reads()) { - return -EOPNOTSUPP; // For exec calls + return -EOPNOTSUPP; } // Cannot return EAGAIN here: the op would get dropped. This check must have @@ -1052,7 +1052,6 @@ int ECBackend::objects_read_local( auto [shard_offset, shard_len] = extent_to_shard_extent(off, len); - dout(20) << __func__ << " Submitting sync read: " << " hoid=" << hoid << " shard_offset=" << shard_offset @@ -1061,7 +1060,6 @@ int ECBackend::objects_read_local( << " primary=" << switcher->is_primary() << dendl; - return switcher->store->read(switcher->ch, ghobject_t(hoid, ghobject_t::NO_GEN, get_parent()->whoami_shard().shard), shard_offset, diff --git a/src/osd/ECSwitch.h b/src/osd/ECSwitch.h index 100b1c38aa0..cc0f0f38922 100644 --- a/src/osd/ECSwitch.h +++ b/src/osd/ECSwitch.h @@ -279,7 +279,7 @@ public: if (is_optimized()) { return optimized.objects_read_local(hoid, off, len, op_flags, bl); } - return legacy.objects_read_local(hoid, off, len, op_flags, bl); + return -EOPNOTSUPP; } int objects_readv_sync(const hobject_t &hoid, diff --git a/src/test/osd/TestBackendBasics.cc b/src/test/osd/TestBackendBasics.cc index 7e89f712792..4b355579023 100644 --- a/src/test/osd/TestBackendBasics.cc +++ b/src/test/osd/TestBackendBasics.cc @@ -354,6 +354,11 @@ TEST_P(TestBackendBasics, DirectRead) { EXPECT_GE(read_result, 0) << param.label << " direct read to shard " << shard_id << " should complete successfully"; + if (obj_name == "test_direct_read_EC_ISA_Opt_k4m2_su4k_4k") + { + std::cout << obj_name << " is the test of interest" << std::endl; + } + // For direct reads, we expect to get back only the data for this shard // which is one stripe_unit ASSERT_EQ(shard_data.length(), stripe_unit)