From: Radoslaw Zarzynski Date: Tue, 4 Apr 2023 21:22:51 +0000 (+0000) Subject: crimson/osd: fix ENOENT on accessing RadosGW user's index of buckets X-Git-Tag: v19.0.0~904^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=0f9c9439b8cb7bd56da1dd1307f90cfb40cf80fa;p=ceph.git crimson/osd: fix ENOENT on accessing RadosGW user's index of buckets https://gist.github.com/rzarzynski/267661b719c414126a713826175f445c Fixes: https://tracker.ceph.com/issues/59429 Signed-off-by: Radoslaw Zarzynski --- diff --git a/src/crimson/osd/pg_backend.cc b/src/crimson/osd/pg_backend.cc index 86011bf081f6..77432a2c0e2a 100644 --- a/src/crimson/osd/pg_backend.cc +++ b/src/crimson/osd/pg_backend.cc @@ -1322,13 +1322,19 @@ PGBackend::omap_get_header( OSDOp& osd_op, object_stat_sum_t& delta_stats) const { - return omap_get_header(coll, ghobject_t{os.oi.soid}).safe_then_interruptible( - [&delta_stats, &osd_op] (ceph::bufferlist&& header) { - osd_op.outdata = std::move(header); - delta_stats.num_rd_kb += shift_round_up(osd_op.outdata.length(), 10); - delta_stats.num_rd++; - return seastar::now(); - }); + if (os.oi.is_omap()) { + return omap_get_header(coll, ghobject_t{os.oi.soid}).safe_then_interruptible( + [&delta_stats, &osd_op] (ceph::bufferlist&& header) { + osd_op.outdata = std::move(header); + delta_stats.num_rd_kb += shift_round_up(osd_op.outdata.length(), 10); + delta_stats.num_rd++; + return seastar::now(); + }); + } else { + // no omap? return empty data but not ENOENT. This is imporant for + // the case when the object is being creating due to to may_write(). + return seastar::now(); + } } PGBackend::ll_read_ierrorator::future<>