]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
src/rgw: Changing null_yield to optional_yield
authorKalpesh Pandya <kapandya@redhat.com>
Tue, 21 Feb 2023 11:56:41 +0000 (17:26 +0530)
committerKalpesh Pandya <kapandya@redhat.com>
Mon, 19 Jun 2023 21:48:30 +0000 (03:18 +0530)
Changing null_yield in rgw_sal_rados.cc

Signed-off-by: Kalpesh Pandya <kapandya@redhat.com>
17 files changed:
src/rgw/driver/rados/rgw_bucket.cc
src/rgw/driver/rados/rgw_bucket.h
src/rgw/driver/rados/rgw_sal_rados.cc
src/rgw/driver/rados/rgw_sal_rados.h
src/rgw/rgw_admin.cc
src/rgw/rgw_oidc_provider.cc
src/rgw/rgw_oidc_provider.h
src/rgw/rgw_op.cc
src/rgw/rgw_orphan.cc
src/rgw/rgw_rest_oidc_provider.cc
src/rgw/rgw_rest_sts.cc
src/rgw/rgw_rest_sts.h
src/rgw/rgw_sal.h
src/rgw/rgw_sal_dbstore.cc
src/rgw/rgw_sal_dbstore.h
src/rgw/rgw_sal_filter.cc
src/rgw/rgw_sal_filter.h

index 6893be4e3d3ee51d036aee4a1d37dac34f47cadf..f5f0ee177f191f17d7fc0c0ef745f24436d2df9e 100644 (file)
@@ -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){
index 7788d5aa56dc53d49877a5d2afab97c87accb724..ce968275e6b77938b381b98874c811e5b9a7073f 100644 (file)
@@ -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; }
 
index 0aef792b79011c6faa260091789782518e686617..f9f0886b199b8e18b605a674ec10f4892935f3ae 100644 (file)
@@ -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<std::unique_ptr<MultipartUpload>>& uploads,
                                 map<string, bool> *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<RGWOIDCProvider> RadosStore::get_oidc_provider()
 
 int RadosStore::get_oidc_providers(const DoutPrefixProvider *dpp,
                                   const std::string& tenant,
-                                  vector<std::unique_ptr<RGWOIDCProvider>>& providers)
+                                  vector<std::unique_ptr<RGWOIDCProvider>>& 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<rgw::sal::RGWOIDCProvider> 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<rgw::sal::Object> 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<string, bufferlist> 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;
   }
index 557545be357489d2905cc52fc336992389f8e296..28a37ce7dbf18437489f1aa1856da9415a11ea3d 100644 (file)
@@ -215,7 +215,7 @@ class RadosStore : public StoreDriver {
     virtual std::unique_ptr<RGWOIDCProvider> get_oidc_provider() override;
     virtual int get_oidc_providers(const DoutPrefixProvider *dpp,
                                   const std::string& tenant,
-                                  std::vector<std::unique_ptr<RGWOIDCProvider>>& providers) override;
+                                  std::vector<std::unique_ptr<RGWOIDCProvider>>& providers, optional_yield y) override;
     virtual std::unique_ptr<Writer> 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<std::unique_ptr<MultipartUpload>>& uploads,
                                std::map<std::string, bool> *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);
index 14ff7e327c3de998eef3adaf5288b73049796ba7..cab4e1c6282f98f303f8956a1652842836976b2b 100644 (file)
@@ -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;
index da6d73e23f7b63f039e94410ae9c7f9dd1cb19e5..ddf9d863a5fefebf7c06e19b2e090c31cadd9183 100644 (file)
@@ -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;
   }
index 581ee879a6422bacee5212a40988937860dfdf37..f317bcf9e364f049831b287850803d95206a01c4 100644 (file)
@@ -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);
index 8c9d3f1301ca585e4d085e7c428cb2ba77c3ba9a..5e4ba6f3c6e3759809cb03b936322964828611a8 100644 (file)
@@ -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;
index a8b4f5296dd727d21a1828e93ad6a79ef421219f..75c7f9b0907d21fbc8b2b775d7626a02ce059f6c 100644 (file)
@@ -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 "
index db4bc12fcfffd34220fb99b7f005e09492daa1d3..c50b067d58dba81d4933f3830c4c0493cf41d0a6 100644 (file)
@@ -168,7 +168,7 @@ void RGWGetOIDCProvider::execute(optional_yield y)
   std::unique_ptr<rgw::sal::RGWOIDCProvider> 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<std::unique_ptr<rgw::sal::RGWOIDCProvider>> 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");
index 09f77f61d5f6134d4f9fdb7afd795e007bf22138..c5bd8b1b7077eb603f822d3e36c365028bf5810e 100644 (file)
@@ -80,7 +80,7 @@ WebTokenEngine::get_role_name(const string& role_arn) const
 }
 
 std::unique_ptr<rgw::sal::RGWOIDCProvider>
-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<rgw::sal::RGWOIDCProvider> 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;
index ec15de24525e1ba0f745e51a561ceeafe36dab77..91b9e98d3036d16c4e03374fcaf430795032b1f8 100644 (file)
@@ -40,7 +40,7 @@ class WebTokenEngine : public rgw::auth::Engine {
 
   bool is_cert_valid(const std::vector<std::string>& thumbprints, const std::string& cert) const;
 
-  std::unique_ptr<rgw::sal::RGWOIDCProvider> get_provider(const DoutPrefixProvider *dpp, const std::string& role_arn, const std::string& iss) const;
+  std::unique_ptr<rgw::sal::RGWOIDCProvider> 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;
 
index 59b0fc0d1c3cb5ec304c5cd8ee5d4d7623a5b10b..3c33a6d51e17212eb34a6c0dc743c90c531e4dce 100644 (file)
@@ -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<std::unique_ptr<RGWOIDCProvider>>& providers) = 0;
+                                  std::vector<std::unique_ptr<RGWOIDCProvider>>& providers, optional_yield y) = 0;
     /** Get a Writer that appends to an object */
     virtual std::unique_ptr<Writer> 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<std::unique_ptr<MultipartUpload>>& uploads,
                                std::map<std::string, bool> *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;
index 3141e67450e73b8fd718b85456ee96837fea0357..df6330552e758f48c828840cd7130768f60391eb 100644 (file)
@@ -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<std::unique_ptr<MultipartUpload>>& uploads,
                                map<string, bool> *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<RGWUploadPartInfo> 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<std::unique_ptr<RGWOIDCProvider>>& providers)
+      vector<std::unique_ptr<RGWOIDCProvider>>& providers, optional_yield y)
   {
     return 0;
   }
index 108057225010185328bd9413916bcf40d9c6f42b..38b14d0d28c1ca4f17168da94b72647c776f3225 100644 (file)
@@ -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<std::unique_ptr<MultipartUpload>>& uploads,
                                std::map<std::string, bool> *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<RGWOIDCProvider> get_oidc_provider() override;
       virtual int get_oidc_providers(const DoutPrefixProvider *dpp,
           const std::string& tenant,
-          std::vector<std::unique_ptr<RGWOIDCProvider>>& providers) override;
+          std::vector<std::unique_ptr<RGWOIDCProvider>>& providers, optional_yield y) override;
       virtual std::unique_ptr<Writer> get_append_writer(const DoutPrefixProvider *dpp,
                                  optional_yield y,
                                  rgw::sal::Object* obj,
index d038eeed4c48fccc96541dec1f6fb9c45de37ac4..923f9990a28dea620ee3cdd82c9e801f74f783fd 100644 (file)
@@ -475,9 +475,9 @@ std::unique_ptr<RGWOIDCProvider> FilterDriver::get_oidc_provider()
 
 int FilterDriver::get_oidc_providers(const DoutPrefixProvider *dpp,
                                    const std::string& tenant,
-                                   std::vector<std::unique_ptr<RGWOIDCProvider>>& providers)
+                                   std::vector<std::unique_ptr<RGWOIDCProvider>>& providers, optional_yield y)
 {
-  return next->get_oidc_providers(dpp, tenant, providers);
+  return next->get_oidc_providers(dpp, tenant, providers, y);
 }
 
 std::unique_ptr<Writer> 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<std::unique_ptr<MultipartUpload>>& uploads,
                                  std::map<std::string, bool> *common_prefixes,
-                                 bool *is_truncated)
+                                 bool *is_truncated, optional_yield y)
 {
   std::vector<std::unique_ptr<MultipartUpload>> 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;
index d697b6d15c8a534b14adbe18ddf367ba5e85c287..f9ceff7f1a3848fac12efe783bf50bb5edac9cea 100644 (file)
@@ -283,7 +283,7 @@ public:
   virtual int get_oidc_providers(const DoutPrefixProvider *dpp,
                                 const std::string& tenant,
                                 std::vector<std::unique_ptr<RGWOIDCProvider>>&
-                                providers) override;
+                                providers, optional_yield y) override;
   virtual std::unique_ptr<Writer> 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<std::unique_ptr<MultipartUpload>>& uploads,
                              std::map<std::string, bool> *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,