From 96aabf16aa4737fdf1ab13405b02590a9f68a389 Mon Sep 17 00:00:00 2001 From: chunmei-liu Date: Wed, 8 Jun 2022 01:01:43 -0700 Subject: [PATCH] crimson/osd: return directly when obc not exists. if goest into do_osd_ops, will set osd_op.rval, but it is not reuqired in some tests, this follow classic ceph do_op logic. Signed-off-by: chunmei-liu --- src/crimson/osd/osd_operations/client_request.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/crimson/osd/osd_operations/client_request.cc b/src/crimson/osd/osd_operations/client_request.cc index b35dbff1609ea..c5c0659d5dcc4 100644 --- a/src/crimson/osd/osd_operations/client_request.cc +++ b/src/crimson/osd/osd_operations/client_request.cc @@ -285,6 +285,10 @@ ClientRequest::do_process(Ref& pg, crimson::osd::ObjectContextRef obc) return reply_op_error(pg, -EINVAL); } + if (!obc->obs.exists && !op_info.may_write()) { + return reply_op_error(pg, -ENOENT); + } + return pg->do_osd_ops(m, obc, op_info).safe_then_unpack_interruptible( [this, pg](auto submitted, auto all_completed) mutable { return submitted.then_interruptible([this, pg] { -- 2.39.5