auto obj_ctx = store->svc.sysobj->init_obj_ctx();
int r;
if (bucket_id.empty()) {
- r = store->get_bucket_info(obj_ctx, tenant_name, bucket_name, bucket_info, nullptr, pattrs);
+ r = store->get_bucket_info(obj_ctx, tenant_name, bucket_name, bucket_info, nullptr, null_yield, pattrs);
} else {
string bucket_instance_id = bucket_name + ":" + bucket_id;
r = store->get_bucket_instance_info(obj_ctx, bucket_instance_id, bucket_info, NULL, pattrs);
RGWBucketInfo bucket_info;
map<string, bufferlist> attrs;
auto obj_ctx = store->svc.sysobj->init_obj_ctx();
- int r = store->get_bucket_info(obj_ctx, tenant_name, bucket_name, bucket_info, NULL, &attrs);
+ int r = store->get_bucket_info(obj_ctx, tenant_name, bucket_name, bucket_info, NULL, null_yield, &attrs);
if (r < 0) {
cerr << "could not get bucket info for bucket=" << bucket_name << ": " << cpp_strerror(-r) << std::endl;
return -r;
map<string, bufferlist> attrs;
auto obj_ctx = store->svc.sysobj->init_obj_ctx();
- int r = store->get_bucket_info(obj_ctx, tenant_name, bucket_name, bucket_info, NULL, &attrs);
+ int r = store->get_bucket_info(obj_ctx, tenant_name, bucket_name, bucket_info, NULL, null_yield, &attrs);
if (r < 0) {
cerr << "could not get bucket info for bucket=" << bucket_name << ": " << cpp_strerror(-r) << std::endl;
return -r;
{
RGWBucketInfo bucket_info;
RGWSysObjectCtx obj_ctx = store->svc.sysobj->init_obj_ctx();
- int ret = store->get_bucket_info(obj_ctx, tenant_name, bucket_name, bucket_info, NULL);
+ int ret = store->get_bucket_info(obj_ctx, tenant_name, bucket_name, bucket_info, NULL, null_yield);
if (ret < 0) {
ldout(store->ctx(), 0) << "ERROR: could not fetch bucket info: ret=" << ret << dendl;
return ret;
RGWBucketInfo bucket_info;
real_time mtime;
RGWSysObjectCtx obj_ctx = store->svc.sysobj->init_obj_ctx();
- int r = store->get_bucket_info(obj_ctx, user_id.tenant, bucket.name, bucket_info, &mtime);
+ int r = store->get_bucket_info(obj_ctx, user_id.tenant, bucket.name, bucket_info, &mtime, null_yield);
if (r < 0) {
ldout(store->ctx(), 0) << "could not get bucket info for bucket=" << bucket << dendl;
continue;
string bucket_ver, master_ver;
- ret = store->get_bucket_info(obj_ctx, bucket.tenant, bucket.name, info, NULL);
+ ret = store->get_bucket_info(obj_ctx, bucket.tenant, bucket.name, info, NULL, null_yield);
if (ret < 0)
return ret;
string bucket_ver, master_ver;
- ret = store->get_bucket_info(sysobj_ctx, bucket.tenant, bucket.name, info, NULL);
+ ret = store->get_bucket_info(sysobj_ctx, bucket.tenant, bucket.name, info, NULL, null_yield);
if (ret < 0)
return ret;
return -EINVAL;
if (!bucket_name.empty()) {
- int r = store->get_bucket_info(obj_ctx, tenant, bucket_name, bucket_info, NULL);
+ int r = store->get_bucket_info(obj_ctx, tenant, bucket_name, bucket_info, NULL, null_yield);
if (r < 0) {
ldout(store->ctx(), 0) << "could not get bucket info for bucket=" << bucket_name << dendl;
return r;
RGWBucketInfo bucket_info;
map<string, bufferlist> attrs;
auto obj_ctx = store->svc.sysobj->init_obj_ctx();
- int r = store->get_bucket_info(obj_ctx, bucket.tenant, bucket.name, bucket_info, NULL, &attrs);
+ int r = store->get_bucket_info(obj_ctx, bucket.tenant, bucket.name, bucket_info, NULL, null_yield, &attrs);
if (r < 0) {
set_err_msg(err_msg, "could not get bucket info for bucket=" + bucket.name + ": " + cpp_strerror(-r));
return r;
RGWBucketInfo bucket_info;
map<string, bufferlist> attrs;
- int ret = store->get_bucket_info(sysobj_ctx, bucket.tenant, bucket.name, bucket_info, NULL, &attrs);
+ int ret = store->get_bucket_info(sysobj_ctx, bucket.tenant, bucket.name, bucket_info, NULL, null_yield, &attrs);
if (ret < 0) {
return ret;
}
real_time mtime;
auto obj_ctx = store->svc.sysobj->init_obj_ctx();
- int r = store->get_bucket_info(obj_ctx, tenant_name, bucket_name, bucket_info, &mtime);
+ int r = store->get_bucket_info(obj_ctx, tenant_name, bucket_name, bucket_info, &mtime, null_yield);
if (r < 0)
return r;
* the loop body */
ret = store->get_bucket_info(obj_ctx, bucket.tenant, bucket.name,
- info, nullptr);
+ info, nullptr, null_yield);
if (ret < 0)
continue;
// all the instances
auto [tenant, bucket] = split_tenant(bucket_name);
RGWBucketInfo cur_bucket_info;
- int r = store->get_bucket_info(obj_ctx, tenant, bucket, cur_bucket_info, nullptr);
+ int r = store->get_bucket_info(obj_ctx, tenant, bucket, cur_bucket_info, nullptr, null_yield);
if (r < 0) {
if (r == -ENOENT) {
// bucket doesn't exist, everything is stale then
RGWBucketInfo bucket_info;
map <std::string, bufferlist> bucket_attrs;
int ret = store->get_bucket_info(obj_ctx, tenant_name, bucket_name,
- bucket_info, nullptr, &bucket_attrs);
+ bucket_info, nullptr, null_yield, &bucket_attrs);
if (ret < 0) {
// TODO: Should we handle the case where the bucket could've been removed between
// listing and fetching?
{
RGWSysObjectCtx obj_ctx(store->svc.sysobj->init_obj_ctx());
return store->get_bucket_info(obj_ctx, params.tenant, params.bucket_name,
- result->bucket_info, &result->mtime, &result->attrs);
+ result->bucket_info, &result->mtime, null_yield, &result->attrs);
}
template<>
map<string, bufferlist> bucket_attrs;
int ret = store->get_bucket_info(sysobj_ctx, user.tenant, bucket_name,
- bucket_info, nullptr, &bucket_attrs);
+ bucket_info, nullptr, null_yield, &bucket_attrs);
if (ret < 0 && ret != -ENOENT)
return ret;
bool bucket_exists = (ret != -ENOENT);
string bucket_tenant = result[0];
string bucket_name = result[1];
string bucket_marker = result[2];
- int ret = store->get_bucket_info(obj_ctx, bucket_tenant, bucket_name, bucket_info, NULL, &bucket_attrs);
+ int ret = store->get_bucket_info(obj_ctx, bucket_tenant, bucket_name, bucket_info, NULL, null_yield, &bucket_attrs);
if (ret < 0) {
ldpp_dout(this, 0) << "LC:get_bucket_info for " << bucket_name << " failed" << dendl;
return ret;
RGWBucketInfo source_info;
if (s->bucket_instance_id.empty()) {
- ret = store->get_bucket_info(obj_ctx, s->src_tenant_name, s->src_bucket_name, source_info, NULL);
+ ret = store->get_bucket_info(obj_ctx, s->src_tenant_name, s->src_bucket_name, source_info, NULL, s->yield);
} else {
ret = store->get_bucket_instance_info(obj_ctx, s->bucket_instance_id, source_info, NULL, NULL);
}
if (s->bucket_instance_id.empty()) {
ret = store->get_bucket_info(obj_ctx, s->bucket_tenant, s->bucket_name,
s->bucket_info, &s->bucket_mtime,
- &s->bucket_attrs);
+ s->yield, &s->bucket_attrs);
} else {
ret = store->get_bucket_instance_info(obj_ctx, s->bucket_instance_id,
s->bucket_info, &s->bucket_mtime,
auto obj_ctx = store->svc.sysobj->init_obj_ctx();
int r = store->get_bucket_info(obj_ctx, s->user->user_id.tenant,
bucket_name, bucket_info, NULL,
- &bucket_attrs);
+ s->yield, &bucket_attrs);
if (r < 0) {
ldpp_dout(this, 0) << "could not get bucket info for bucket="
<< bucket_name << dendl;
auto obj_ctx = store->svc.sysobj->init_obj_ctx();
int r = store->get_bucket_info(obj_ctx, s->user->user_id.tenant,
bucket_name, bucket_info, nullptr,
- &bucket_attrs);
+ s->yield, &bucket_attrs);
if (r < 0) {
ldpp_dout(this, 0) << "could not get bucket info for bucket="
<< bucket_name << dendl;
/* we need to make sure we read bucket info, it's not read before for this
* specific request */
op_ret = store->get_bucket_info(*s->sysobj_ctx, s->bucket_tenant, s->bucket_name,
- s->bucket_info, nullptr, &s->bucket_attrs);
+ s->bucket_info, nullptr, s->yield, &s->bucket_attrs);
if (op_ret < 0 && op_ret != -ENOENT)
return;
s->bucket_exists = (op_ret != -ENOENT);
map<string, bufferlist> battrs;
op_ret = store->get_bucket_info(*s->sysobj_ctx, s->bucket_tenant, s->bucket_name,
- binfo, nullptr, &battrs);
+ binfo, nullptr, s->yield, &battrs);
if (op_ret < 0) {
return;
} else if (binfo.owner.compare(s->user->user_id) != 0) {
map<string, bufferlist> src_attrs;
if (s->bucket_instance_id.empty()) {
- op_ret = store->get_bucket_info(*s->sysobj_ctx, src_tenant_name, src_bucket_name, src_bucket_info, NULL, &src_attrs);
+ op_ret = store->get_bucket_info(*s->sysobj_ctx, src_tenant_name, src_bucket_name, src_bucket_info, NULL, s->yield, &src_attrs);
} else {
/* will only happen in intra region sync where the source and dest bucket is the same */
op_ret = store->get_bucket_instance_info(*s->sysobj_ctx, s->bucket_instance_id, src_bucket_info, NULL, &src_attrs);
dest_attrs = src_attrs;
} else {
op_ret = store->get_bucket_info(*s->sysobj_ctx, dest_tenant_name, dest_bucket_name,
- dest_bucket_info, nullptr, &dest_attrs);
+ dest_bucket_info, nullptr, s->yield, &dest_attrs);
if (op_ret < 0) {
if (op_ret == -ENOENT) {
op_ret = -ERR_NO_SUCH_BUCKET;
int ret = store->get_bucket_info(*s->sysobj_ctx, s->user->user_id.tenant,
path.bucket_name, binfo, nullptr,
- &battrs);
+ s->yield, &battrs);
if (ret < 0) {
goto binfo_fail;
}
RGWBucketInfo binfo;
std::map<std::string, ceph::bufferlist> battrs;
op_ret = store->get_bucket_info(*dir_ctx, s->bucket_tenant, bucket_name,
- binfo, nullptr, &battrs);
+ binfo, nullptr, s->yield, &battrs);
if (op_ret < 0 && op_ret != -ENOENT) {
return op_ret;
}
std::map<std::string, ceph::bufferlist> battrs;
ACLOwner bowner;
op_ret = store->get_bucket_info(*s->sysobj_ctx, s->user->user_id.tenant,
- bucket_name, binfo, nullptr, &battrs);
+ bucket_name, binfo, nullptr, s->yield, &battrs);
if (op_ret == -ENOENT) {
ldpp_dout(this, 20) << "non existent directory=" << bucket_name << dendl;
} else if (op_ret < 0) {
RGWBucketInfo cur_bucket_info;
ret = store->get_bucket_info(sysobj_ctx, orphan_bucket.tenant,
- orphan_bucket.name, cur_bucket_info, nullptr);
+ orphan_bucket.name, cur_bucket_info, nullptr, null_yield);
if (ret < 0) {
if (ret == -ENOENT) {
/* probably raced with bucket removal */
RGWBucketInfo bucket_info;
string tenant;
RGWSysObjectCtx obj_ctx(store->svc.sysobj->init_obj_ctx());
- ret = store->get_bucket_info(obj_ctx, tenant, sub_conf.dest.bucket_name, bucket_info, nullptr, nullptr);
+ ret = store->get_bucket_info(obj_ctx, tenant, sub_conf.dest.bucket_name, bucket_info, nullptr, null_yield, nullptr);
if (ret == -ENOENT) {
list.is_truncated = false;
return 0;
RGWBucketInfo bucket_info;
string tenant;
RGWSysObjectCtx sysobj_ctx(store->svc.sysobj->init_obj_ctx());
- ret = store->get_bucket_info(sysobj_ctx, tenant, sub_conf.dest.bucket_name, bucket_info, nullptr, nullptr);
+ ret = store->get_bucket_info(sysobj_ctx, tenant, sub_conf.dest.bucket_name, bucket_info, nullptr, null_yield, nullptr);
if (ret < 0) {
ldout(store->ctx(), 1) << "ERROR: failed to read bucket info for events bucket: bucket=" << sub_conf.dest.bucket_name << " ret=" << ret << dendl;
return ret;
RGWObjVersionTracker instance_ver = info.objv_tracker;
info.objv_tracker.clear();
auto obj_ctx = svc.sysobj->init_obj_ctx();
- r = get_bucket_info(obj_ctx, bucket.tenant, bucket.name, info, NULL, NULL);
+ r = get_bucket_info(obj_ctx, bucket.tenant, bucket.name, info, NULL, null_yield, NULL);
if (r < 0) {
if (r == -ENOENT) {
continue;
auto sysobj_ctx = svc.sysobj->init_obj_ctx();
- r = get_bucket_info(sysobj_ctx, bucket_info.bucket.tenant, bucket_info.swift_ver_location, dest_bucket_info, NULL, NULL);
+ r = get_bucket_info(sysobj_ctx, bucket_info.bucket.tenant, bucket_info.swift_ver_location, dest_bucket_info, NULL, null_yield, NULL);
if (r < 0) {
ldout(cct, 10) << "failed to read dest bucket info: r=" << r << dendl;
if (r == -ENOENT) {
int ret = get_bucket_info(sysobj_ctx, bucket_info.bucket.tenant,
bucket_info.swift_ver_location, archive_binfo,
- nullptr, nullptr);
+ nullptr, null_yield, nullptr);
if (ret < 0) {
return ret;
}
auto obj_ctx = svc.sysobj->init_obj_ctx();
int r;
if (bucket.bucket_id.empty()) {
- r = get_bucket_info(obj_ctx, bucket.tenant, bucket.name, info, NULL, &attrs);
+ r = get_bucket_info(obj_ctx, bucket.tenant, bucket.name, info, NULL, null_yield, &attrs);
} else {
r = get_bucket_instance_info(obj_ctx, bucket, info, nullptr, &attrs);
}
RGWBucketInfo info;
map<string, bufferlist> attrs;
auto obj_ctx = svc.sysobj->init_obj_ctx();
- int r = get_bucket_info(obj_ctx, bucket.tenant, bucket.name, info, NULL, &attrs);
+ int r = get_bucket_info(obj_ctx, bucket.tenant, bucket.name, info, NULL, null_yield, &attrs);
if (r < 0) {
ldout(cct, 0) << "NOTICE: get_bucket_info on bucket=" << bucket.name << " returned err=" << r << ", skipping bucket" << dendl;
ret = r;
{
RGWBucketInfo bucket_info;
auto obj_ctx = svc.sysobj->init_obj_ctx();
- int ret = get_bucket_info(obj_ctx, bucket.tenant, bucket.name, bucket_info, NULL);
+ int ret = get_bucket_info(obj_ctx, bucket.tenant, bucket.name, bucket_info, NULL, null_yield);
if (ret < 0) {
return ret;
}
int RGWRados::get_bucket_info(RGWSysObjectCtx& obj_ctx,
const string& tenant, const string& bucket_name,
RGWBucketInfo& info,
- real_time *pmtime, map<string, bufferlist> *pattrs)
+ real_time *pmtime,
+ optional_yield y, map<string, bufferlist> *pattrs)
{
return _get_bucket_info(obj_ctx, tenant, bucket_name, info, pmtime,
pattrs, boost::none);
int get_bucket_info(RGWSysObjectCtx& obj_ctx,
const string& tenant_name, const string& bucket_name,
RGWBucketInfo& info,
- ceph::real_time *pmtime, map<string, bufferlist> *pattrs = NULL);
+ ceph::real_time *pmtime, optional_yield y, map<string, bufferlist> *pattrs = NULL);
// Returns 0 on successful refresh. Returns error code if there was
// an error or the version stored on the OSD is the same as that
map<string, bufferlist> attrs;
ret = store->get_bucket_info(obj_ctx, entry.tenant, entry.bucket_name,
- bucket_info, nullptr, &attrs);
+ bucket_info, nullptr, null_yield, &attrs);
if (ret < 0) {
ldout(cct, 0) << __func__ << ": Error in get_bucket_info: " <<
cpp_strerror(-ret) << dendl;
RGWBucketInfo bucket_info;
map<string, bufferlist> attrs;
auto obj_ctx = store->svc.sysobj->init_obj_ctx();
- http_ret = store->get_bucket_info(obj_ctx, uid.tenant, bucket, bucket_info, NULL, &attrs);
+ http_ret = store->get_bucket_info(obj_ctx, uid.tenant, bucket, bucket_info, NULL, s->yield, &attrs);
if (http_ret < 0) {
return;
}
return;
}
} else { /* !bucket_name.empty() */
- http_ret = store->get_bucket_info(*s->sysobj_ctx, tenant_name, bucket_name, bucket_info, NULL, NULL);
+ http_ret = store->get_bucket_info(*s->sysobj_ctx, tenant_name, bucket_name, bucket_info, NULL, null_yield, NULL);
if (http_ret < 0) {
dout(5) << "could not get bucket info for bucket=" << bucket_name << dendl;
return;
return;
}
} else { /* !bucket_name.empty() */
- http_ret = store->get_bucket_info(*s->sysobj_ctx, tenant_name, bucket_name, bucket_info, NULL, NULL);
+ http_ret = store->get_bucket_info(*s->sysobj_ctx, tenant_name, bucket_name, bucket_info, NULL, null_yield, NULL);
if (http_ret < 0) {
dout(5) << "could not get bucket info for bucket=" << bucket_name << dendl;
return;
return;
}
} else { /* !bucket_name.empty() */
- http_ret = store->get_bucket_info(*s->sysobj_ctx, tenant_name, bucket_name, bucket_info, NULL, NULL);
+ http_ret = store->get_bucket_info(*s->sysobj_ctx, tenant_name, bucket_name, bucket_info, NULL, null_yield, NULL);
if (http_ret < 0) {
dout(5) << "could not get bucket info for bucket=" << bucket_name << dendl;
return;
copy_source_tenant_name,
copy_source_bucket_name,
copy_source_bucket_info,
- NULL, &src_attrs);
+ NULL, s->yield, &src_attrs);
if (ret < 0) {
ldpp_dout(this, 5) << __func__ << "(): get_bucket_info() returned ret=" << ret << dendl;
return ret;
int ret = store->get_bucket_info(*s->sysobj_ctx, s->bucket_tenant,
s->bucket_name, s->bucket_info, NULL,
- &s->bucket_attrs);
+ s->yield, &s->bucket_attrs);
if (ret < 0) {
// TODO-FUTURE: if the bucket does not exist, maybe expose it here?
return -ERR_NO_SUCH_BUCKET;
auto obj_ctx = store->svc.sysobj->init_obj_ctx();
r = store->get_bucket_info(obj_ctx, s->user->user_id.tenant,
bucket_name, bucket_info, nullptr,
- &bucket_attrs);
+ s->yield, &bucket_attrs);
if (r < 0) {
ldpp_dout(this, 0) << "could not get bucket info for bucket="
<< bucket_name << dendl;
RGWBucketInfo bucket_info;
int ret = store->get_bucket_info(*s->sysobj_ctx,
bucket_tenant, bucket_name,
- bucket_info, nullptr);
+ bucket_info, nullptr, s->yield);
if (ret < 0) {
throw ret;
}
RGWBucketInfo bucket_info;
int ret = store->get_bucket_info(*s->sysobj_ctx,
bucket_tenant, bucket_name,
- bucket_info, nullptr);
+ bucket_info, nullptr, null_yield);
if (ret < 0) {
throw ret;
}
const auto& id = s->owner.get_id();
ret = store->get_bucket_info(*s->sysobj_ctx, id.tenant, bucket_name,
- bucket_info, nullptr, nullptr);
+ bucket_info, nullptr, null_yield, nullptr);
if (ret < 0) {
ldout(s->cct, 1) << "failed to get bucket info, cannot verify ownership" << dendl;
return ret;
}
ret = store->get_bucket_info(*s->sysobj_ctx, s->owner.get_id().tenant, bucket_name,
- bucket_info, nullptr, nullptr);
+ bucket_info, nullptr, null_yield, nullptr);
if (ret < 0) {
return ret;
}
}
ret = store->get_bucket_info(*s->sysobj_ctx, s->owner.get_id().tenant, bucket_name,
- bucket_info, nullptr, nullptr);
+ bucket_info, nullptr, null_yield, nullptr);
if (ret < 0) {
return ret;
}
tenant, name,
bucket_info,
&mtime,
+ null_yield,
&attrs);
if (ret < 0) {
return ret;
RGWBucketInfo bucket_info;
ret = store->get_bucket_info(obj_ctx, user_id.tenant, bucket_ent.bucket.name,
- bucket_info, nullptr, nullptr);
+ bucket_info, nullptr, null_yield, nullptr);
if (ret < 0) {
ldout(cct, 0) << "ERROR: could not read bucket info: bucket=" << bucket_ent.bucket << " ret=" << ret << dendl;
continue;