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;
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");
// 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;
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;
{
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,
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){
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; }
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 */
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;
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;
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 <<
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;
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;
}
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;
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 {
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;
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;
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;
* 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++;
}
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;
}
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;
}
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,
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;
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,
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,
~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);
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;
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;
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;
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);
return -EINVAL;
}
- ret = read_url(dpp, url, tenant);
+ ret = read_url(dpp, url, tenant, y);
if (ret < 0) {
return ret;
}
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:
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);
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;
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;
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) {
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);
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) {
}
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;
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)
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;
}
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;
{
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;
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;
// 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__ <<
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 "
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;
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");
}
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);
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;
}
}
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;
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;
/** 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,
* 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 */
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;
/** 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;
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;
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;
}
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;
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;
}
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;
}
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;
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;
~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 {
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,
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,
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,
}
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)
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;
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;
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,
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(); }
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;
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,