From: Kalpesh Pandya Date: Tue, 21 Feb 2023 11:56:41 +0000 (+0530) Subject: src/rgw: Changing null_yield to optional_yield X-Git-Tag: v19.0.0~990^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=02e604fc94ecbab77b08bad84acd719ab2863a9e;p=ceph.git src/rgw: Changing null_yield to optional_yield Changing null_yield in rgw_sal_rados.cc Signed-off-by: Kalpesh Pandya --- diff --git a/src/rgw/driver/rados/rgw_bucket.cc b/src/rgw/driver/rados/rgw_bucket.cc index 6893be4e3d3e..f5f0ee177f19 100644 --- a/src/rgw/driver/rados/rgw_bucket.cc +++ b/src/rgw/driver/rados/rgw_bucket.cc @@ -254,12 +254,12 @@ int RGWBucket::chown(RGWBucketAdminOpState& op_state, const string& marker, return rgw_chown_bucket_and_objects(driver, bucket.get(), user.get(), marker, err_msg, dpp, y); } -int RGWBucket::set_quota(RGWBucketAdminOpState& op_state, const DoutPrefixProvider *dpp, std::string *err_msg) +int RGWBucket::set_quota(RGWBucketAdminOpState& op_state, const DoutPrefixProvider *dpp, optional_yield y, std::string *err_msg) { bucket = op_state.get_bucket()->clone(); bucket->get_info().quota = op_state.quota; - int r = bucket->put_info(dpp, false, real_time()); + int r = bucket->put_info(dpp, false, real_time(), y); if (r < 0) { set_err_msg(err_msg, "ERROR: failed writing bucket instance info: " + cpp_strerror(-r)); return r; @@ -489,7 +489,7 @@ int RGWBucket::check_index(const DoutPrefixProvider *dpp, return 0; } -int RGWBucket::sync(RGWBucketAdminOpState& op_state, const DoutPrefixProvider *dpp, std::string *err_msg) +int RGWBucket::sync(RGWBucketAdminOpState& op_state, const DoutPrefixProvider *dpp, optional_yield y, std::string *err_msg) { if (!driver->is_meta_master()) { set_err_msg(err_msg, "ERROR: failed to update bucket sync: only allowed on meta master zone"); @@ -504,7 +504,7 @@ int RGWBucket::sync(RGWBucketAdminOpState& op_state, const DoutPrefixProvider *d // when writing this metadata, RGWSI_BucketIndex_RADOS::handle_overwrite() // will write the corresponding datalog and bilog entries - int r = bucket->put_info(dpp, false, real_time()); + int r = bucket->put_info(dpp, false, real_time(), y); if (r < 0) { set_err_msg(err_msg, "ERROR: failed writing bucket instance info:" + cpp_strerror(-r)); return r; @@ -726,7 +726,7 @@ int RGWBucketAdminOp::link(rgw::sal::Driver* driver, RGWBucketAdminOpState& op_s exclusive = true; } - r = loc_bucket->put_info(dpp, exclusive, ceph::real_time()); + r = loc_bucket->put_info(dpp, exclusive, ceph::real_time(), y); if (r < 0) { set_err_msg(err, "ERROR: failed writing bucket instance info: " + cpp_strerror(-r)); return r; @@ -858,7 +858,7 @@ int RGWBucketAdminOp::sync_bucket(rgw::sal::Driver* driver, RGWBucketAdminOpStat { return ret; } - return bucket.sync(op_state, dpp, err_msg); + return bucket.sync(op_state, dpp, y, err_msg); } static int bucket_stats(rgw::sal::Driver* driver, @@ -1157,7 +1157,7 @@ int RGWBucketAdminOp::set_quota(rgw::sal::Driver* driver, RGWBucketAdminOpState& int ret = bucket.init(driver, op_state, y, dpp); if (ret < 0) return ret; - return bucket.set_quota(op_state, dpp); + return bucket.set_quota(op_state, dpp, y); } inline auto split_tenant(const std::string& bucket_name){ diff --git a/src/rgw/driver/rados/rgw_bucket.h b/src/rgw/driver/rados/rgw_bucket.h index 7788d5aa56dc..ce968275e6b7 100644 --- a/src/rgw/driver/rados/rgw_bucket.h +++ b/src/rgw/driver/rados/rgw_bucket.h @@ -341,12 +341,12 @@ public: int chown(RGWBucketAdminOpState& op_state, const std::string& marker, optional_yield y, const DoutPrefixProvider *dpp, std::string *err_msg = NULL); - int set_quota(RGWBucketAdminOpState& op_state, const DoutPrefixProvider *dpp, std::string *err_msg = NULL); + int set_quota(RGWBucketAdminOpState& op_state, const DoutPrefixProvider *dpp, optional_yield y, std::string *err_msg = NULL); int remove_object(const DoutPrefixProvider *dpp, RGWBucketAdminOpState& op_state, optional_yield y, std::string *err_msg = NULL); int policy_bl_to_stream(bufferlist& bl, std::ostream& o); int get_policy(RGWBucketAdminOpState& op_state, RGWAccessControlPolicy& policy, optional_yield y, const DoutPrefixProvider *dpp); - int sync(RGWBucketAdminOpState& op_state, const DoutPrefixProvider *dpp, std::string *err_msg = NULL); + int sync(RGWBucketAdminOpState& op_state, const DoutPrefixProvider *dpp, optional_yield y, std::string *err_msg = NULL); void clear_failure() { failure = false; } diff --git a/src/rgw/driver/rados/rgw_sal_rados.cc b/src/rgw/driver/rados/rgw_sal_rados.cc index 0aef792b7901..f9f0886b199b 100644 --- a/src/rgw/driver/rados/rgw_sal_rados.cc +++ b/src/rgw/driver/rados/rgw_sal_rados.cc @@ -768,10 +768,10 @@ int RadosBucket::chown(const DoutPrefixProvider* dpp, User& new_user, optional_y return this->link(dpp, &new_user, y); } -int RadosBucket::put_info(const DoutPrefixProvider* dpp, bool exclusive, ceph::real_time _mtime) +int RadosBucket::put_info(const DoutPrefixProvider* dpp, bool exclusive, ceph::real_time _mtime, optional_yield y) { mtime = _mtime; - return store->getRados()->put_bucket_instance_info(info, exclusive, mtime, &attrs, dpp, null_yield); + return store->getRados()->put_bucket_instance_info(info, exclusive, mtime, &attrs, dpp, y); } /* Make sure to call get_bucket_info() if you need it first */ @@ -935,7 +935,7 @@ int RadosBucket::list_multiparts(const DoutPrefixProvider *dpp, const int& max_uploads, vector>& uploads, map *common_prefixes, - bool *is_truncated) + bool *is_truncated, optional_yield y) { rgw::sal::Bucket::ListParams params; rgw::sal::Bucket::ListResults results; @@ -947,7 +947,7 @@ int RadosBucket::list_multiparts(const DoutPrefixProvider *dpp, params.ns = RGW_OBJ_NS_MULTIPART; params.access_list_filter = &mp_filter; - int ret = list(dpp, params, max_uploads, results, null_yield); + int ret = list(dpp, params, max_uploads, results, y); if (ret < 0) return ret; @@ -984,7 +984,7 @@ int RadosBucket::abort_multiparts(const DoutPrefixProvider* dpp, do { ret = list_multiparts(dpp, empty_prefix, marker, empty_delim, - max, uploads, nullptr, &is_truncated); + max, uploads, nullptr, &is_truncated, y); if (ret < 0) { ldpp_dout(dpp, 0) << __func__ << " ERROR : calling list_bucket_multiparts; ret=" << ret << @@ -1635,7 +1635,7 @@ std::unique_ptr RadosStore::get_oidc_provider() int RadosStore::get_oidc_providers(const DoutPrefixProvider *dpp, const std::string& tenant, - vector>& providers) + vector>& providers, optional_yield y) { std::string prefix = tenant + RGWOIDCProvider::oidc_url_oid_prefix; auto pool = svc()->zone->get_zone_params().oidc_pool; @@ -1656,7 +1656,7 @@ int RadosStore::get_oidc_providers(const DoutPrefixProvider *dpp, std::unique_ptr provider = get_oidc_provider(); bufferlist bl; - r = rgw_get_system_obj(svc()->sysobj, pool, iter, bl, nullptr, nullptr, null_yield, dpp); + r = rgw_get_system_obj(svc()->sysobj, pool, iter, bl, nullptr, nullptr, y, dpp); if (r < 0) { return r; } @@ -2447,7 +2447,7 @@ int RadosMultipartUpload::abort(const DoutPrefixProvider *dpp, CephContext *cct, uint64_t parts_accounted_size = 0; do { - ret = list_parts(dpp, cct, 1000, marker, &marker, &truncated); + ret = list_parts(dpp, cct, 1000, marker, &marker, &truncated, y); if (ret < 0) { ldpp_dout(dpp, 20) << __func__ << ": RadosMultipartUpload::list_parts returned " << ret << dendl; @@ -2462,7 +2462,7 @@ int RadosMultipartUpload::abort(const DoutPrefixProvider *dpp, CephContext *cct, std::unique_ptr obj = bucket->get_object( rgw_obj_key(obj_part->oid, std::string(), RGW_OBJ_NS_MULTIPART)); obj->set_hash_source(mp_obj.get_key()); - ret = obj->delete_object(dpp, null_yield); + ret = obj->delete_object(dpp, y); if (ret < 0 && ret != -ENOENT) return ret; } else { @@ -2512,7 +2512,7 @@ int RadosMultipartUpload::abort(const DoutPrefixProvider *dpp, CephContext *cct, del_op->params.parts_accounted_size = parts_accounted_size; // and also remove the metadata obj - ret = del_op->delete_obj(dpp, null_yield); + ret = del_op->delete_obj(dpp, y); if (ret < 0) { ldpp_dout(dpp, 20) << __func__ << ": del_op.delete_obj returned " << ret << dendl; @@ -2573,7 +2573,7 @@ int RadosMultipartUpload::init(const DoutPrefixProvider *dpp, optional_yield y, int RadosMultipartUpload::list_parts(const DoutPrefixProvider *dpp, CephContext *cct, int num_parts, int marker, - int *next_marker, bool *truncated, + int *next_marker, bool *truncated, optional_yield y, bool assume_unsorted) { map parts_map; @@ -2601,9 +2601,9 @@ int RadosMultipartUpload::list_parts(const DoutPrefixProvider *dpp, CephContext p.append(buf); ret = sysobj.omap().get_vals(dpp, p, num_parts + 1, &parts_map, - nullptr, null_yield); + nullptr, y); } else { - ret = sysobj.omap().get_all(dpp, &parts_map, null_yield); + ret = sysobj.omap().get_all(dpp, &parts_map, y); } if (ret < 0) { return ret; @@ -2635,7 +2635,7 @@ int RadosMultipartUpload::list_parts(const DoutPrefixProvider *dpp, CephContext * where one gateway doesn't support correctly sorted omap * keys for multipart upload just assume data is unsorted. */ - return list_parts(dpp, cct, num_parts, marker, next_marker, truncated, true); + return list_parts(dpp, cct, num_parts, marker, next_marker, truncated, y, true); } expected_next++; } @@ -2704,7 +2704,7 @@ int RadosMultipartUpload::complete(const DoutPrefixProvider *dpp, rgw::sal::Attrs attrs = target_obj->get_attrs(); do { - ret = list_parts(dpp, cct, max_parts, marker, &marker, &truncated); + ret = list_parts(dpp, cct, max_parts, marker, &marker, &truncated, y); if (ret == -ENOENT) { ret = -ERR_NO_SUCH_UPLOAD; } @@ -3493,14 +3493,14 @@ int RadosOIDCProvider::store_url(const DoutPrefixProvider *dpp, const std::strin return rgw_put_system_obj(dpp, sysobj, store->svc()->zone->get_zone_params().oidc_pool, oid, bl, exclusive, nullptr, real_time(), y); } -int RadosOIDCProvider::read_url(const DoutPrefixProvider *dpp, const std::string& url, const std::string& tenant) +int RadosOIDCProvider::read_url(const DoutPrefixProvider *dpp, const std::string& url, const std::string& tenant, optional_yield y) { auto sysobj = store->svc()->sysobj; auto& pool = store->svc()->zone->get_zone_params().oidc_pool; std::string oid = tenant + get_url_oid_prefix() + url; bufferlist bl; - int ret = rgw_get_system_obj(sysobj, pool, oid, bl, nullptr, nullptr, null_yield, dpp); + int ret = rgw_get_system_obj(sysobj, pool, oid, bl, nullptr, nullptr, y, dpp); if (ret < 0) { return ret; } diff --git a/src/rgw/driver/rados/rgw_sal_rados.h b/src/rgw/driver/rados/rgw_sal_rados.h index 557545be3574..28a37ce7dbf1 100644 --- a/src/rgw/driver/rados/rgw_sal_rados.h +++ b/src/rgw/driver/rados/rgw_sal_rados.h @@ -215,7 +215,7 @@ class RadosStore : public StoreDriver { virtual std::unique_ptr get_oidc_provider() override; virtual int get_oidc_providers(const DoutPrefixProvider *dpp, const std::string& tenant, - std::vector>& providers) override; + std::vector>& providers, optional_yield y) override; virtual std::unique_ptr get_append_writer(const DoutPrefixProvider *dpp, optional_yield y, rgw::sal::Object* obj, @@ -570,7 +570,7 @@ class RadosBucket : public StoreBucket { virtual int update_container_stats(const DoutPrefixProvider* dpp, optional_yield y) override; virtual int check_bucket_shards(const DoutPrefixProvider* dpp, optional_yield y) override; virtual int chown(const DoutPrefixProvider* dpp, User& new_user, optional_yield y) override; - virtual int put_info(const DoutPrefixProvider* dpp, bool exclusive, ceph::real_time mtime) override; + virtual int put_info(const DoutPrefixProvider* dpp, bool exclusive, ceph::real_time mtime, optional_yield y) override; virtual bool is_owner(User* user) override; virtual int check_empty(const DoutPrefixProvider* dpp, optional_yield y) override; virtual int check_quota(const DoutPrefixProvider *dpp, RGWQuota& quota, uint64_t obj_size, optional_yield y, bool check_size_only = false) override; @@ -599,7 +599,7 @@ class RadosBucket : public StoreBucket { const int& max_uploads, std::vector>& uploads, std::map *common_prefixes, - bool *is_truncated) override; + bool *is_truncated, optional_yield y) override; virtual int abort_multiparts(const DoutPrefixProvider* dpp, CephContext* cct, optional_yield y) override; int read_topics(rgw_pubsub_bucket_topics& notifications, RGWObjVersionTracker* objv_tracker, @@ -660,7 +660,7 @@ public: virtual int init(const DoutPrefixProvider* dpp, optional_yield y, ACLOwner& owner, rgw_placement_rule& dest_placement, rgw::sal::Attrs& attrs) override; virtual int list_parts(const DoutPrefixProvider* dpp, CephContext* cct, int num_parts, int marker, - int* next_marker, bool* truncated, + int* next_marker, bool* truncated, optional_yield y, bool assume_unsorted = false) override; virtual int abort(const DoutPrefixProvider* dpp, CephContext* cct, optional_yield y) override; virtual int complete(const DoutPrefixProvider* dpp, @@ -923,7 +923,7 @@ public: ~RadosOIDCProvider() = default; virtual int store_url(const DoutPrefixProvider *dpp, const std::string& url, bool exclusive, optional_yield y) override; - virtual int read_url(const DoutPrefixProvider *dpp, const std::string& url, const std::string& tenant) override; + virtual int read_url(const DoutPrefixProvider *dpp, const std::string& url, const std::string& tenant, optional_yield y) override; virtual int delete_obj(const DoutPrefixProvider *dpp, optional_yield y) override; void encode(bufferlist& bl) const { RGWOIDCProvider::encode(bl); diff --git a/src/rgw/rgw_admin.cc b/src/rgw/rgw_admin.cc index 14ff7e327c3d..cab4e1c6282f 100644 --- a/src/rgw/rgw_admin.cc +++ b/src/rgw/rgw_admin.cc @@ -1404,7 +1404,7 @@ int set_bucket_quota(rgw::sal::Driver* driver, OPT opt_cmd, set_quota_info(bucket->get_info().quota, opt_cmd, max_size, max_objects, have_max_size, have_max_objects); - r = bucket->put_info(dpp(), false, real_time()); + r = bucket->put_info(dpp(), false, real_time(), null_yield); if (r < 0) { cerr << "ERROR: failed writing bucket instance info: " << cpp_strerror(-r) << std::endl; return -r; @@ -3183,7 +3183,7 @@ public: return 0; } - int ret = bucket->put_info(dpp(), false, real_time()); + int ret = bucket->put_info(dpp(), false, real_time(), null_yield); if (ret < 0) { cerr << "failed to driver bucket info: " << cpp_strerror(-ret) << std::endl; return -ret; diff --git a/src/rgw/rgw_oidc_provider.cc b/src/rgw/rgw_oidc_provider.cc index da6d73e23f7b..ddf9d863a5fe 100644 --- a/src/rgw/rgw_oidc_provider.cc +++ b/src/rgw/rgw_oidc_provider.cc @@ -57,7 +57,7 @@ int RGWOIDCProvider::create(const DoutPrefixProvider *dpp, bool exclusive, optio string idp_url = url_remove_prefix(provider_url); /* check to see the name is not used */ - ret = read_url(dpp, idp_url, tenant); + ret = read_url(dpp, idp_url, tenant, y); if (exclusive && ret == 0) { ldpp_dout(dpp, 0) << "ERROR: url " << provider_url << " already in use" << id << dendl; @@ -94,7 +94,7 @@ int RGWOIDCProvider::create(const DoutPrefixProvider *dpp, bool exclusive, optio return 0; } -int RGWOIDCProvider::get(const DoutPrefixProvider *dpp) +int RGWOIDCProvider::get(const DoutPrefixProvider *dpp, optional_yield y) { string url, tenant; auto ret = get_tenant_url_from_arn(tenant, url); @@ -109,7 +109,7 @@ int RGWOIDCProvider::get(const DoutPrefixProvider *dpp) return -EINVAL; } - ret = read_url(dpp, url, tenant); + ret = read_url(dpp, url, tenant, y); if (ret < 0) { return ret; } diff --git a/src/rgw/rgw_oidc_provider.h b/src/rgw/rgw_oidc_provider.h index 581ee879a642..f317bcf9e364 100644 --- a/src/rgw/rgw_oidc_provider.h +++ b/src/rgw/rgw_oidc_provider.h @@ -34,7 +34,7 @@ protected: int get_tenant_url_from_arn(std::string& tenant, std::string& url); virtual int store_url(const DoutPrefixProvider *dpp, const std::string& url, bool exclusive, optional_yield y) = 0; - virtual int read_url(const DoutPrefixProvider *dpp, const std::string& url, const std::string& tenant) = 0; + virtual int read_url(const DoutPrefixProvider *dpp, const std::string& url, const std::string& tenant, optional_yield y) = 0; bool validate_input(const DoutPrefixProvider *dpp); public: @@ -109,7 +109,7 @@ public: int create(const DoutPrefixProvider *dpp, bool exclusive, optional_yield y); virtual int delete_obj(const DoutPrefixProvider *dpp, optional_yield y) = 0; - int get(const DoutPrefixProvider *dpp); + int get(const DoutPrefixProvider *dpp, optional_yield y); void dump(Formatter *f) const; void dump_all(Formatter *f) const; void decode_json(JSONObj *obj); diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index 8c9d3f1301ca..5e4ba6f3c6e3 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -1312,7 +1312,7 @@ void RGWPutBucketReplication::execute(optional_yield y) { s->bucket->get_info().set_sync_policy(std::move(sync_policy)); - int ret = s->bucket->put_info(this, false, real_time()); + int ret = s->bucket->put_info(this, false, real_time(), null_yield); if (ret < 0) { ldpp_dout(this, 0) << "ERROR: put_bucket_instance_info (bucket=" << s->bucket << ") returned ret=" << ret << dendl; return ret; @@ -1356,7 +1356,7 @@ void RGWDeleteBucketReplication::execute(optional_yield y) s->bucket->get_info().set_sync_policy(std::move(sync_policy)); - int ret = s->bucket->put_info(this, false, real_time()); + int ret = s->bucket->put_info(this, false, real_time(), null_yield); if (ret < 0) { ldpp_dout(this, 0) << "ERROR: put_bucket_instance_info (bucket=" << s->bucket << ") returned ret=" << ret << dendl; return ret; @@ -2813,7 +2813,7 @@ void RGWSetBucketVersioning::execute(optional_yield y) return op_ret; } s->bucket->set_attrs(rgw::sal::Attrs(s->bucket_attrs)); - return s->bucket->put_info(this, false, real_time()); + return s->bucket->put_info(this, false, real_time(), y); }, y); if (!modified) { @@ -2883,7 +2883,7 @@ void RGWSetBucketWebsite::execute(optional_yield y) op_ret = retry_raced_bucket_write(this, s->bucket.get(), [this] { s->bucket->get_info().has_website = true; s->bucket->get_info().website_conf = website_conf; - op_ret = s->bucket->put_info(this, false, real_time()); + op_ret = s->bucket->put_info(this, false, real_time(), null_yield); return op_ret; }, y); @@ -2926,7 +2926,7 @@ void RGWDeleteBucketWebsite::execute(optional_yield y) op_ret = retry_raced_bucket_write(this, s->bucket.get(), [this] { s->bucket->get_info().has_website = false; s->bucket->get_info().website_conf = RGWBucketWebsiteConf(); - op_ret = s->bucket->put_info(this, false, real_time()); + op_ret = s->bucket->put_info(this, false, real_time(), null_yield); return op_ret; }, y); if (op_ret < 0) { @@ -6247,7 +6247,7 @@ void RGWSetRequestPayment::execute(optional_yield y) } s->bucket->get_info().requester_pays = requester_pays; - op_ret = s->bucket->put_info(this, false, real_time()); + op_ret = s->bucket->put_info(this, false, real_time(), y); if (op_ret < 0) { ldpp_dout(this, 0) << "NOTICE: put_bucket_info on bucket=" << s->bucket->get_name() << " returned err=" << op_ret << dendl; @@ -6774,7 +6774,7 @@ void RGWListMultipart::execute(optional_yield y) if (op_ret < 0) return; - op_ret = upload->list_parts(this, s->cct, max_parts, marker, NULL, &truncated); + op_ret = upload->list_parts(this, s->cct, max_parts, marker, NULL, &truncated, y); } int RGWListBucketMultiparts::verify_permission(optional_yield y) @@ -6817,7 +6817,7 @@ void RGWListBucketMultiparts::execute(optional_yield y) op_ret = s->bucket->list_multiparts(this, prefix, marker_meta, delimiter, max_uploads, uploads, - &common_prefixes, &is_truncated); + &common_prefixes, &is_truncated, y); if (op_ret < 0) { return; } @@ -8060,7 +8060,7 @@ void RGWConfigBucketMetaSearch::execute(optional_yield y) s->bucket->get_info().mdsearch_config = mdsearch_config; - op_ret = s->bucket->put_info(this, false, real_time()); + op_ret = s->bucket->put_info(this, false, real_time(), y); if (op_ret < 0) { ldpp_dout(this, 0) << "NOTICE: put_bucket_info on bucket=" << s->bucket->get_name() << " returned err=" << op_ret << dendl; @@ -8101,7 +8101,7 @@ void RGWDelBucketMetaSearch::execute(optional_yield y) { s->bucket->get_info().mdsearch_config.clear(); - op_ret = s->bucket->put_info(this, false, real_time()); + op_ret = s->bucket->put_info(this, false, real_time(), y); if (op_ret < 0) { ldpp_dout(this, 0) << "NOTICE: put_bucket_info on bucket=" << s->bucket->get_name() << " returned err=" << op_ret << dendl; @@ -8402,7 +8402,7 @@ void RGWPutBucketObjectLock::execute(optional_yield y) op_ret = retry_raced_bucket_write(this, s->bucket.get(), [this] { s->bucket->get_info().obj_lock = obj_lock; - op_ret = s->bucket->put_info(this, false, real_time()); + op_ret = s->bucket->put_info(this, false, real_time(), null_yield); return op_ret; }, y); return; diff --git a/src/rgw/rgw_orphan.cc b/src/rgw/rgw_orphan.cc index a8b4f5296dd7..75c7f9b0907d 100644 --- a/src/rgw/rgw_orphan.cc +++ b/src/rgw/rgw_orphan.cc @@ -1494,7 +1494,7 @@ int RGWRadosList::do_incomplete_multipart(const DoutPrefixProvider *dpp, // use empty strings for params.{prefix,delim} do { - ret = bucket->list_multiparts(dpp, string(), marker, string(), max_uploads, uploads, nullptr, &is_truncated); + ret = bucket->list_multiparts(dpp, string(), marker, string(), max_uploads, uploads, nullptr, &is_truncated, null_yield); if (ret == -ENOENT) { // could bucket have been removed while this is running? ldpp_dout(dpp, 5) << "RGWRadosList::" << __func__ << @@ -1515,7 +1515,7 @@ int RGWRadosList::do_incomplete_multipart(const DoutPrefixProvider *dpp, do { // while (is_parts_truncated); ret = upload->list_parts(dpp, store->ctx(), max_parts, parts_marker, - &parts_marker, &is_parts_truncated); + &parts_marker, &is_parts_truncated, null_yield); if (ret == -ENOENT) { ldpp_dout(dpp, 5) << "RGWRadosList::" << __func__ << ": WARNING: list_multipart_parts returned ret=-ENOENT " diff --git a/src/rgw/rgw_rest_oidc_provider.cc b/src/rgw/rgw_rest_oidc_provider.cc index db4bc12fcfff..c50b067d58db 100644 --- a/src/rgw/rgw_rest_oidc_provider.cc +++ b/src/rgw/rgw_rest_oidc_provider.cc @@ -168,7 +168,7 @@ void RGWGetOIDCProvider::execute(optional_yield y) std::unique_ptr provider = driver->get_oidc_provider(); provider->set_arn(provider_arn); provider->set_tenant(s->user->get_tenant()); - op_ret = provider->get(s); + op_ret = provider->get(s, y); if (op_ret < 0 && op_ret != -ENOENT && op_ret != -EINVAL) { op_ret = ERR_INTERNAL_ERROR; @@ -209,7 +209,7 @@ int RGWListOIDCProviders::verify_permission(optional_yield y) void RGWListOIDCProviders::execute(optional_yield y) { vector> result; - op_ret = driver->get_oidc_providers(s, s->user->get_tenant(), result); + op_ret = driver->get_oidc_providers(s, s->user->get_tenant(), result, y); if (op_ret == 0) { s->formatter->open_array_section("ListOpenIDConnectProvidersResponse"); diff --git a/src/rgw/rgw_rest_sts.cc b/src/rgw/rgw_rest_sts.cc index 09f77f61d5f6..c5bd8b1b7077 100644 --- a/src/rgw/rgw_rest_sts.cc +++ b/src/rgw/rgw_rest_sts.cc @@ -80,7 +80,7 @@ WebTokenEngine::get_role_name(const string& role_arn) const } std::unique_ptr -WebTokenEngine::get_provider(const DoutPrefixProvider *dpp, const string& role_arn, const string& iss) const +WebTokenEngine::get_provider(const DoutPrefixProvider *dpp, const string& role_arn, const string& iss, optional_yield y) const { string tenant = get_role_tenant(role_arn); @@ -104,7 +104,7 @@ WebTokenEngine::get_provider(const DoutPrefixProvider *dpp, const string& role_a std::unique_ptr provider = driver->get_oidc_provider(); provider->set_arn(p_arn); provider->set_tenant(tenant); - auto ret = provider->get(dpp); + auto ret = provider->get(dpp, y); if (ret < 0) { return nullptr; } @@ -248,7 +248,7 @@ WebTokenEngine::get_from_jwt(const DoutPrefixProvider* dpp, const std::string& t } string role_arn = s->info.args.get("RoleArn"); - auto provider = get_provider(dpp, role_arn, iss); + auto provider = get_provider(dpp, role_arn, iss, y); if (! provider) { ldpp_dout(dpp, 0) << "Couldn't get oidc provider info using input iss" << iss << dendl; throw -EACCES; diff --git a/src/rgw/rgw_rest_sts.h b/src/rgw/rgw_rest_sts.h index ec15de24525e..91b9e98d3036 100644 --- a/src/rgw/rgw_rest_sts.h +++ b/src/rgw/rgw_rest_sts.h @@ -40,7 +40,7 @@ class WebTokenEngine : public rgw::auth::Engine { bool is_cert_valid(const std::vector& thumbprints, const std::string& cert) const; - std::unique_ptr get_provider(const DoutPrefixProvider *dpp, const std::string& role_arn, const std::string& iss) const; + std::unique_ptr get_provider(const DoutPrefixProvider *dpp, const std::string& role_arn, const std::string& iss, optional_yield y) const; std::string get_role_tenant(const std::string& role_arn) const; diff --git a/src/rgw/rgw_sal.h b/src/rgw/rgw_sal.h index 59b0fc0d1c3c..3c33a6d51e17 100644 --- a/src/rgw/rgw_sal.h +++ b/src/rgw/rgw_sal.h @@ -418,7 +418,7 @@ class Driver { /** Get all Open ID Connector providers, optionally filtered by tenant */ virtual int get_oidc_providers(const DoutPrefixProvider *dpp, const std::string& tenant, - std::vector>& providers) = 0; + std::vector>& providers, optional_yield y) = 0; /** Get a Writer that appends to an object */ virtual std::unique_ptr get_append_writer(const DoutPrefixProvider *dpp, optional_yield y, @@ -684,7 +684,7 @@ class Bucket { * change ownership of the objects in the bucket. */ virtual int chown(const DoutPrefixProvider* dpp, User& new_user, optional_yield y) = 0; /** Store the cached bucket info into the backing store */ - virtual int put_info(const DoutPrefixProvider* dpp, bool exclusive, ceph::real_time mtime) = 0; + virtual int put_info(const DoutPrefixProvider* dpp, bool exclusive, ceph::real_time mtime, optional_yield y) = 0; /** Check to see if the given user is the owner of this bucket */ virtual bool is_owner(User* user) = 0; /** Get the owner of this bucket */ @@ -773,7 +773,7 @@ class Bucket { const int& max_uploads, std::vector>& uploads, std::map *common_prefixes, - bool *is_truncated) = 0; + bool *is_truncated, optional_yield y) = 0; /** Abort multipart uploads in a bucket */ virtual int abort_multiparts(const DoutPrefixProvider* dpp, CephContext* cct, optional_yield y) = 0; @@ -1198,7 +1198,7 @@ public: /** List all the parts of this upload, filling the parts cache */ virtual int list_parts(const DoutPrefixProvider* dpp, CephContext* cct, int num_parts, int marker, - int* next_marker, bool* truncated, + int* next_marker, bool* truncated, optional_yield y, bool assume_unsorted = false) = 0; /** Abort this upload */ virtual int abort(const DoutPrefixProvider* dpp, CephContext* cct, optional_yield y) = 0; diff --git a/src/rgw/rgw_sal_dbstore.cc b/src/rgw/rgw_sal_dbstore.cc index 3141e67450e7..df6330552e75 100644 --- a/src/rgw/rgw_sal_dbstore.cc +++ b/src/rgw/rgw_sal_dbstore.cc @@ -329,7 +329,7 @@ namespace rgw::sal { return ret; } - int DBBucket::put_info(const DoutPrefixProvider *dpp, bool exclusive, ceph::real_time _mtime) + int DBBucket::put_info(const DoutPrefixProvider *dpp, bool exclusive, ceph::real_time _mtime, optional_yield y) { int ret; @@ -499,7 +499,7 @@ namespace rgw::sal { const int& max_uploads, vector>& uploads, map *common_prefixes, - bool *is_truncated) { + bool *is_truncated, optional_yield y) { return 0; } @@ -955,7 +955,7 @@ namespace rgw::sal { int DBMultipartUpload::list_parts(const DoutPrefixProvider *dpp, CephContext *cct, int num_parts, int marker, - int *next_marker, bool *truncated, + int *next_marker, bool *truncated, optional_yield y, bool assume_unsorted) { std::list parts_map; @@ -1038,7 +1038,7 @@ namespace rgw::sal { ofs = 0; accounted_size = 0; do { - ret = list_parts(dpp, cct, max_parts, marker, &marker, &truncated); + ret = list_parts(dpp, cct, max_parts, marker, &marker, &truncated, y); if (ret == -ENOENT) { ret = -ERR_NO_SUCH_UPLOAD; } @@ -1546,7 +1546,7 @@ namespace rgw::sal { int DBStore::get_oidc_providers(const DoutPrefixProvider *dpp, const std::string& tenant, - vector>& providers) + vector>& providers, optional_yield y) { return 0; } diff --git a/src/rgw/rgw_sal_dbstore.h b/src/rgw/rgw_sal_dbstore.h index 108057225010..38b14d0d28c1 100644 --- a/src/rgw/rgw_sal_dbstore.h +++ b/src/rgw/rgw_sal_dbstore.h @@ -203,7 +203,7 @@ protected: virtual int update_container_stats(const DoutPrefixProvider *dpp, optional_yield y) override; virtual int check_bucket_shards(const DoutPrefixProvider *dpp, optional_yield y) override; virtual int chown(const DoutPrefixProvider *dpp, User& new_user, optional_yield y) override; - virtual int put_info(const DoutPrefixProvider *dpp, bool exclusive, ceph::real_time mtime) override; + virtual int put_info(const DoutPrefixProvider *dpp, bool exclusive, ceph::real_time mtime, optional_yield y) override; virtual bool is_owner(User* user) override; virtual int check_empty(const DoutPrefixProvider *dpp, optional_yield y) override; virtual int check_quota(const DoutPrefixProvider *dpp, RGWQuota& quota, uint64_t obj_size, optional_yield y, bool check_size_only = false) override; @@ -231,7 +231,7 @@ protected: const int& max_uploads, std::vector>& uploads, std::map *common_prefixes, - bool *is_truncated) override; + bool *is_truncated, optional_yield y) override; virtual int abort_multiparts(const DoutPrefixProvider* dpp, CephContext* cct, optional_yield y) override; @@ -386,7 +386,7 @@ protected: ~DBOIDCProvider() = default; virtual int store_url(const DoutPrefixProvider *dpp, const std::string& url, bool exclusive, optional_yield y) override { return 0; } - virtual int read_url(const DoutPrefixProvider *dpp, const std::string& url, const std::string& tenant) override { return 0; } + virtual int read_url(const DoutPrefixProvider *dpp, const std::string& url, const std::string& tenant, optional_yield y) override { return 0; } virtual int delete_obj(const DoutPrefixProvider *dpp, optional_yield y) override { return 0;} void encode(bufferlist& bl) const { @@ -500,7 +500,7 @@ protected: virtual int init(const DoutPrefixProvider* dpp, optional_yield y, ACLOwner& owner, rgw_placement_rule& dest_placement, rgw::sal::Attrs& attrs) override; virtual int list_parts(const DoutPrefixProvider* dpp, CephContext* cct, int num_parts, int marker, - int* next_marker, bool* truncated, + int* next_marker, bool* truncated, optional_yield y, bool assume_unsorted = false) override; virtual int abort(const DoutPrefixProvider* dpp, CephContext* cct, optional_yield y) override; virtual int complete(const DoutPrefixProvider* dpp, @@ -869,7 +869,7 @@ public: virtual std::unique_ptr get_oidc_provider() override; virtual int get_oidc_providers(const DoutPrefixProvider *dpp, const std::string& tenant, - std::vector>& providers) override; + std::vector>& providers, optional_yield y) override; virtual std::unique_ptr get_append_writer(const DoutPrefixProvider *dpp, optional_yield y, rgw::sal::Object* obj, diff --git a/src/rgw/rgw_sal_filter.cc b/src/rgw/rgw_sal_filter.cc index d038eeed4c48..923f9990a28d 100644 --- a/src/rgw/rgw_sal_filter.cc +++ b/src/rgw/rgw_sal_filter.cc @@ -475,9 +475,9 @@ std::unique_ptr FilterDriver::get_oidc_provider() int FilterDriver::get_oidc_providers(const DoutPrefixProvider *dpp, const std::string& tenant, - std::vector>& providers) + std::vector>& providers, optional_yield y) { - return next->get_oidc_providers(dpp, tenant, providers); + return next->get_oidc_providers(dpp, tenant, providers, y); } std::unique_ptr FilterDriver::get_append_writer(const DoutPrefixProvider *dpp, @@ -727,9 +727,9 @@ int FilterBucket::chown(const DoutPrefixProvider* dpp, User& new_user, optional_ } int FilterBucket::put_info(const DoutPrefixProvider* dpp, bool exclusive, - ceph::real_time _mtime) + ceph::real_time _mtime, optional_yield y) { - return next->put_info(dpp, exclusive, _mtime); + return next->put_info(dpp, exclusive, _mtime, y); } bool FilterBucket::is_owner(User* user) @@ -822,13 +822,13 @@ int FilterBucket::list_multiparts(const DoutPrefixProvider *dpp, const int& max_uploads, std::vector>& uploads, std::map *common_prefixes, - bool *is_truncated) + bool *is_truncated, optional_yield y) { std::vector> nup; int ret; ret = next->list_multiparts(dpp, prefix, marker, delim, max_uploads, nup, - common_prefixes, is_truncated); + common_prefixes, is_truncated, y); if (ret < 0) return ret; @@ -1096,12 +1096,12 @@ int FilterMultipartUpload::init(const DoutPrefixProvider *dpp, optional_yield y, int FilterMultipartUpload::list_parts(const DoutPrefixProvider *dpp, CephContext *cct, int num_parts, int marker, - int *next_marker, bool *truncated, + int *next_marker, bool *truncated, optional_yield y, bool assume_unsorted) { int ret; - ret = next->list_parts(dpp, cct, num_parts, marker, next_marker, truncated, + ret = next->list_parts(dpp, cct, num_parts, marker, next_marker, truncated, y, assume_unsorted); if (ret < 0) return ret; diff --git a/src/rgw/rgw_sal_filter.h b/src/rgw/rgw_sal_filter.h index d697b6d15c8a..f9ceff7f1a38 100644 --- a/src/rgw/rgw_sal_filter.h +++ b/src/rgw/rgw_sal_filter.h @@ -283,7 +283,7 @@ public: virtual int get_oidc_providers(const DoutPrefixProvider *dpp, const std::string& tenant, std::vector>& - providers) override; + providers, optional_yield y) override; virtual std::unique_ptr get_append_writer(const DoutPrefixProvider *dpp, optional_yield y, rgw::sal::Object* obj, @@ -441,7 +441,7 @@ public: virtual int chown(const DoutPrefixProvider* dpp, User& new_user, optional_yield y) override; virtual int put_info(const DoutPrefixProvider* dpp, bool exclusive, - ceph::real_time mtime) override; + ceph::real_time mtime, optional_yield y) override; virtual bool is_owner(User* user) override; virtual User* get_owner(void) override { return user; } virtual ACLOwner get_acl_owner(void) override { return next->get_acl_owner(); } @@ -505,7 +505,7 @@ public: const int& max_uploads, std::vector>& uploads, std::map *common_prefixes, - bool *is_truncated) override; + bool *is_truncated, optional_yield y) override; virtual int abort_multiparts(const DoutPrefixProvider* dpp, CephContext* cct, optional_yield y) override; @@ -738,7 +738,7 @@ public: virtual int init(const DoutPrefixProvider* dpp, optional_yield y, ACLOwner& owner, rgw_placement_rule& dest_placement, rgw::sal::Attrs& attrs) override; virtual int list_parts(const DoutPrefixProvider* dpp, CephContext* cct, int num_parts, int marker, - int* next_marker, bool* truncated, + int* next_marker, bool* truncated, optional_yield y, bool assume_unsorted = false) override; virtual int abort(const DoutPrefixProvider* dpp, CephContext* cct, optional_yield y) override; virtual int complete(const DoutPrefixProvider* dpp,