From 50bd0c7641eb0d093491264b3f768e5ddea8abc8 Mon Sep 17 00:00:00 2001 From: chunmei-liu Date: Thu, 24 Feb 2022 21:48:07 -0800 Subject: [PATCH] crimson: fix object not exist when do fiemap Signed-off-by: chunmei-liu --- src/crimson/os/alienstore/alien_store.cc | 11 ++++++++--- src/crimson/osd/pg_backend.cc | 5 +++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/crimson/os/alienstore/alien_store.cc b/src/crimson/os/alienstore/alien_store.cc index 5035b2da14c0e..54d61f76bce09 100644 --- a/src/crimson/os/alienstore/alien_store.cc +++ b/src/crimson/os/alienstore/alien_store.cc @@ -586,9 +586,14 @@ AlienStore::read_errorator::future> AlienStore::fie return tp->submit(ch->get_cid().hash_to_shard(tp->size()), [=, &destmap] { auto c = static_cast(ch.get()); return store->fiemap(c->collection, oid, off, len, destmap); - }).then([&destmap](int i) { - return read_errorator::make_ready_future>( - std::move(destmap)); + }).then([&destmap](int r) + -> read_errorator::future> { + if (r == -ENOENT) { + return crimson::ct_error::enoent::make(); + } else { + return read_errorator::make_ready_future>( + std::move(destmap)); + } }); }); } diff --git a/src/crimson/osd/pg_backend.cc b/src/crimson/osd/pg_backend.cc index 627c0eb23b7f8..45c2ca05efe3c 100644 --- a/src/crimson/osd/pg_backend.cc +++ b/src/crimson/osd/pg_backend.cc @@ -231,6 +231,11 @@ PGBackend::read_ierrorator::future<> PGBackend::sparse_read(const ObjectState& os, OSDOp& osd_op, object_stat_sum_t& delta_stats) { + if (!os.exists || os.oi.is_whiteout()) { + logger().debug("{}: {} DNE", __func__, os.oi.soid); + return crimson::ct_error::enoent::make(); + } + const auto& op = osd_op.op; logger().trace("sparse_read: {} {}~{}", os.oi.soid, op.extent.offset, op.extent.length); -- 2.39.5