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
auto [shard_offset, shard_len] = extent_to_shard_extent(off, len);
-
dout(20) << __func__ << " Submitting sync read: "
<< " hoid=" << hoid
<< " shard_offset=" << shard_offset
<< " 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,
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,
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)