From: yuliyang Date: Fri, 5 Nov 2021 07:40:44 +0000 (+0100) Subject: rgw: fix UploadPartCopy error code when src object not exist and src bucket not exist X-Git-Tag: v17.1.0~213^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=0804104ec01cd6acb57fd5c764bf1cfa47ff9a16;p=ceph.git rgw: fix UploadPartCopy error code when src object not exist and src bucket not exist fix https://tracker.ceph.com/issues/53181 Signed-off-by: yuliyang --- diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index f295fb92d576..1f057cefa5d0 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -367,10 +367,10 @@ static int read_obj_policy(const DoutPrefixProvider *dpp, map& bucket_attrs, RGWAccessControlPolicy* acl, string *storage_class, - boost::optional& policy, + boost::optional& policy, rgw::sal::Bucket* bucket, rgw::sal::Object* object, - optional_yield y, + optional_yield y, bool copy_src=false) { string upload_id; @@ -3489,6 +3489,9 @@ int RGWPutObj::init_processing(optional_yield y) { &bucket, y); if (ret < 0) { ldpp_dout(this, 5) << __func__ << "(): get_bucket() returned ret=" << ret << dendl; + if (ret == -ENOENT) { + ret = -ERR_NO_SUCH_BUCKET; + } return ret; } @@ -3556,9 +3559,9 @@ int RGWPutObj::verify_permission(optional_yield y) cs_object->set_prefetch_data(s->obj_ctx); /* check source object permissions */ - if (read_obj_policy(this, store, s, copy_source_bucket_info, cs_attrs, &cs_acl, nullptr, - policy, cs_bucket.get(), cs_object.get(), y, true) < 0) { - return -EACCES; + if (ret = read_obj_policy(this, store, s, copy_source_bucket_info, cs_attrs, &cs_acl, nullptr, + policy, cs_bucket.get(), cs_object.get(), y, true); ret < 0) { + return ret; } /* admin request overrides permission checks */