void init(RGWSI_Bucket *bucket_svc,
RGWBucketCtl *bucket_ctl) override {
base_init(bucket_svc->ctx(),
- bucket_svc->get_ep_be_handler());
+ bucket_svc->get_ep_be_handler().get());
svc.bucket = bucket_svc;
ctl.bucket = bucket_ctl;
}
real_time mtime;
map<string, bufferlist> attrs;
- int ret = svc.bucket->read_bucket_entrypoint_info(op->ctx(), entry, &be, &ot, &mtime, &attrs, y);
+ RGWSI_Bucket_EP_Ctx ctx(op->ctx());
+
+ int ret = svc.bucket->read_bucket_entrypoint_info(ctx, entry, &be, &ot, &mtime, &attrs, y);
if (ret < 0)
return ret;
real_time orig_mtime;
- int ret = svc.bucket->read_bucket_entrypoint_info(op->ctx(), entry, &be, &objv_tracker, &orig_mtime, nullptr, y);
+ RGWSI_Bucket_EP_Ctx ctx(op->ctx());
+
+ int ret = svc.bucket->read_bucket_entrypoint_info(ctx, entry, &be, &objv_tracker, &orig_mtime, nullptr, y);
if (ret < 0)
return ret;
lderr(svc.bucket->ctx()) << "could not unlink bucket=" << entry << " owner=" << be.owner << dendl;
}
- ret = svc.bucket->remove_bucket_entrypoint_info(op->ctx(), entry, &objv_tracker);
+ ret = svc.bucket->remove_bucket_entrypoint_info(ctx, entry, &objv_tracker);
if (ret < 0) {
lderr(svc.bucket->ctx()) << "could not delete bucket=" << entry << dendl;
}
/* idempotent */
return 0;
}
+
+ int call(std::function<int(RGWSI_Bucket_EP_Ctx& ctx)> f) {
+ return be_handler->call([&](RGWSI_MetaBackend_Handler::Op *op) {
+ RGWSI_Bucket_EP_Ctx ctx(op->ctx());
+ return f(ctx);
+ });
+ }
};
class RGWMetadataHandlerPut_Bucket : public RGWMetadataHandlerPut_SObj
auto mtime = obj->get_mtime();
auto pattrs = obj->get_pattrs();
- return handler->svc.bucket->store_bucket_entrypoint_info(op->ctx(), entry,
+ RGWSI_Bucket_EP_Ctx ctx(op->ctx());
+
+ return handler->svc.bucket->store_bucket_entrypoint_info(ctx, entry,
be,
false,
mtime,
optional_yield y) override {
auto cct = svc.bucket->ctx();
+ RGWSI_Bucket_EP_Ctx ctx(op->ctx());
+
ldout(cct, 5) << "SKIP: bucket removal is not allowed on archive zone: bucket:" << entry << " ... proceeding to rename" << dendl;
string tenant_name, bucket_name;
RGWBucketEntryPoint be;
map<string, bufferlist> attrs;
- int ret = svc.bucket->read_bucket_entrypoint_info(op->ctx(), entry, &be, &objv_tracker, &mtime, &attrs, y);
+ int ret = svc.bucket->read_bucket_entrypoint_info(ctx, entry, &be, &objv_tracker, &mtime, &attrs, y);
if (ret < 0) {
return ret;
}
ceph::real_time orig_mtime;
RGWBucketInfo old_bi;
- ret = svc.bucket->read_bucket_instance_info(op->ctx(), bi_meta_name, &old_bi, &orig_mtime, &attrs_m, y);
+ ret = ctl.bucket->read_bucket_instance_info(be.bucket, &old_bi, y, RGWBucketCtl::BucketInstance::GetParams()
+ .set_mtime(&orig_mtime)
+ .set_attrs(&attrs_m));
if (ret < 0) {
return ret;
}
new_be.bucket.name = new_bucket_name;
- ret = svc.bucket->store_bucket_instance_info(op->ctx(), bi_meta_name, new_bi, false, orig_mtime, &attrs_m, y);
+ ret = ctl.bucket->store_bucket_instance_info(be.bucket, new_bi, y, RGWBucketCtl::BucketInstance::PutParams()
+ .set_exclusive(false)
+ .set_mtime(orig_mtime)
+ .set_attrs(&attrs_m));
if (ret < 0) {
ldout(cct, 0) << "ERROR: failed to put new bucket instance info for bucket=" << new_bi.bucket << " ret=" << ret << dendl;
return ret;
RGWObjVersionTracker ot;
ot.generate_new_write_ver(cct);
- ret = svc.bucket->store_bucket_entrypoint_info(op->ctx(), RGWSI_Bucket::get_entrypoint_meta_key(new_be.bucket),
+ ret = svc.bucket->store_bucket_entrypoint_info(ctx, RGWSI_Bucket::get_entrypoint_meta_key(new_be.bucket),
new_be, true, mtime, &attrs, nullptr, y);
if (ret < 0) {
ldout(cct, 0) << "ERROR: failed to put new bucket entrypoint for bucket=" << new_be.bucket << " ret=" << ret << dendl;
// whether it was a newly created bucket entrypoint ... in which case we
// should ignore the error and move forward, or whether it is a higher version
// of the same bucket instance ... in which we should retry
- ret = svc.bucket->remove_bucket_entrypoint_info(op->ctx(),
+ ret = svc.bucket->remove_bucket_entrypoint_info(ctx,
RGWSI_Bucket::get_entrypoint_meta_key(be.bucket),
&objv_tracker,
y);
return ret;
}
- ret = svc.bucket->remove_bucket_instance_info(op->ctx(), bi_meta_name, nullptr, y);
+ ret = ctl.bucket->remove_bucket_instance_info(be.bucket, old_bi, y);
if (ret < 0) {
lderr(cct) << "could not delete bucket=" << entry << dendl;
}
};
class RGWBucketInstanceMetadataHandler : public RGWBucketInstanceMetadataHandlerBase {
- int read_bucket_instance_entry(RGWSI_MetaBackend_Handler::Op *op,
+ int read_bucket_instance_entry(RGWSI_Bucket_BI_Ctx& ctx,
const string& entry,
RGWBucketCompleteInfo *bi,
ceph::real_time *pmtime,
optional_yield y) {
- return svc.bucket->read_bucket_instance_info(op->ctx(),
+ return svc.bucket->read_bucket_instance_info(ctx,
entry,
&bi->info,
pmtime, &bi->attrs,
y);
}
- int remove_bucket_instance_entry(RGWSI_MetaBackend_Handler::Op *op,
+ int remove_bucket_instance_entry(RGWSI_Bucket_BI_Ctx& ctx,
const string& entry,
RGWObjVersionTracker *objv_tracker,
const ceph::real_time& mtime,
optional_yield y) {
#warning mtime?
- return svc.bucket->remove_bucket_instance_info(op->ctx(), entry, objv_tracker, y);
+ return svc.bucket->remove_bucket_instance_info(ctx, entry, objv_tracker, y);
}
RGWSI_Bucket *bucket_svc,
RGWSI_BucketIndex *bi_svc) {
base_init(bucket_svc->ctx(),
- bucket_svc->get_bi_be_handler());
+ bucket_svc->get_bi_be_handler().get());
svc.zone = zone_svc;
svc.bucket = bucket_svc;
svc.bi = bi_svc;
RGWBucketCompleteInfo bci;
real_time mtime;
- int ret = svc.bucket->read_bucket_instance_info(op->ctx(), entry, &bci.info, &mtime, &bci.attrs, y);
+ RGWSI_Bucket_BI_Ctx ctx(op->ctx());
+
+ int ret = svc.bucket->read_bucket_instance_info(ctx, entry, &bci.info, &mtime, &bci.attrs, y);
if (ret < 0)
return ret;
optional_yield y) override {
RGWBucketCompleteInfo bci;
- int ret = read_bucket_instance_entry(op, entry, &bci, nullptr, y);
+ RGWSI_Bucket_BI_Ctx ctx(op->ctx());
+
+ int ret = read_bucket_instance_entry(ctx, entry, &bci, nullptr, y);
if (ret < 0 && ret != -ENOENT)
return ret;
- return svc.bucket->remove_bucket_instance_info(op->ctx(), entry, &bci.info.objv_tracker);
+ return svc.bucket->remove_bucket_instance_info(ctx, entry, &bci.info.objv_tracker);
+ }
+
+ int call(std::function<int(RGWSI_Bucket_BI_Ctx& ctx)> f) {
+ return be_handler->call([&](RGWSI_MetaBackend_Handler::Op *op) {
+ RGWSI_Bucket_BI_Ctx ctx(op->ctx());
+ return f(ctx);
+ });
}
};
bi_be_handler = bmi_handler->get_be_handler();
}
+int RGWBucketCtl::call(std::function<int(RGWSI_Bucket_X_Ctx& ctx)> f) {
+ return bm_handler->call([&](RGWSI_Bucket_EP_Ctx& ep_ctx) {
+ return bmi_handler->call([&](RGWSI_Bucket_BI_Ctx& bi_ctx) {
+ RGWSI_Bucket_X_Ctx ctx{ep_ctx, bi_ctx};
+ return f(ctx);
+ });
+ });
+}
+
int RGWBucketCtl::read_bucket_entrypoint_info(const rgw_bucket& bucket,
RGWBucketEntryPoint *info,
optional_yield y,
ceph::optional_ref_default<RGWBucketCtl::Bucket::GetParams> _params)
{
auto& params = *_params;
- return bucket_be_handler->call([&](RGWSI_MetaBackend_Handler::Op *op) {
- return svc.bucket->read_bucket_entrypoint_info(op->ctx(),
+ return bm_handler->call([&](RGWSI_Bucket_EP_Ctx& ctx) {
+ return svc.bucket->read_bucket_entrypoint_info(ctx,
RGWSI_Bucket::get_entrypoint_meta_key(bucket),
info,
params.objv_tracker,
ceph::optional_ref_default<RGWBucketCtl::Bucket::PutParams> _params)
{
auto& params = *_params;
- return bucket_be_handler->call([&](RGWSI_MetaBackend_Handler::Op *op) {
- return svc.bucket->store_bucket_entrypoint_info(op->ctx(),
+ return bm_handler->call([&](RGWSI_Bucket_EP_Ctx& ctx) {
+ return svc.bucket->store_bucket_entrypoint_info(ctx,
RGWSI_Bucket::get_entrypoint_meta_key(bucket),
info,
params.exclusive,
ceph::optional_ref_default<RGWBucketCtl::Bucket::RemoveParams> _params)
{
auto& params = *_params;
- return bucket_be_handler->call([&](RGWSI_MetaBackend_Handler::Op *op) {
- return svc.bucket->remove_bucket_entrypoint_info(op->ctx(),
+ return bm_handler->call([&](RGWSI_Bucket_EP_Ctx& ctx) {
+ return svc.bucket->remove_bucket_entrypoint_info(ctx,
RGWSI_Bucket::get_entrypoint_meta_key(bucket),
params.objv_tracker);
});
ceph::optional_ref_default<RGWBucketCtl::BucketInstance::GetParams> _params)
{
auto& params = *_params;
- int ret = bi_be_handler->call([&](RGWSI_MetaBackend_Handler::Op *op) {
- return svc.bucket->read_bucket_instance_info(op->ctx(),
+ int ret = bmi_handler->call([&](RGWSI_Bucket_BI_Ctx& ctx) {
+ return svc.bucket->read_bucket_instance_info(ctx,
RGWSI_Bucket::get_bi_meta_key(bucket),
info,
params.mtime,
return 0;
}
-int RGWBucketCtl::do_store_bucket_instance_info(RGWSI_MetaBackend_Handler::Op *op,
+int RGWBucketCtl::do_store_bucket_instance_info(RGWSI_Bucket_BI_Ctx& ctx,
const rgw_bucket& bucket,
RGWBucketInfo& info,
optional_yield y,
info.objv_tracker = *params.objv_tracker;
}
- return svc.bucket->store_bucket_instance_info(op->ctx(),
+ return svc.bucket->store_bucket_instance_info(ctx,
RGWSI_Bucket::get_bi_meta_key(bucket),
info,
params.exclusive,
optional_yield y,
ceph::optional_ref_default<RGWBucketCtl::BucketInstance::PutParams> _params)
{
- return bi_be_handler->call([&](RGWSI_MetaBackend_Handler::Op *op) {
- return do_store_bucket_instance_info(op, bucket, info, _params, y);
+ return bmi_handler->call([&](RGWSI_Bucket_BI_Ctx& ctx) {
+ return do_store_bucket_instance_info(ctx, bucket, info, _params, y);
});
}
info.objv_tracker = *params.objv_tracker;
}
- return bi_be_handler->call([&](RGWSI_MetaBackend_Handler::Op *op) {
- return svc.bucket->remove_bucket_instance_info(op->ctx(),
+ return bmi_handler->call([&](RGWSI_Bucket_BI_Ctx& ctx) {
+ return svc.bucket->remove_bucket_instance_info(ctx,
RGWSI_Bucket::get_bi_meta_key(bucket),
&info.objv_tracker,
y);
});
}
-int RGWBucketCtl::convert_old_bucket_info(RGWSI_MetaBackend_Handler::Op *op,
+int RGWBucketCtl::convert_old_bucket_info(RGWSI_Bucket_X_Ctx& ctx,
const rgw_bucket& bucket,
optional_yield y)
{
ldout(cct, 10) << "RGWRados::convert_old_bucket_info(): bucket=" << bucket << dendl;
- int ret = svc.bucket->read_bucket_entrypoint_info(op->ctx(),
+ int ret = svc.bucket->read_bucket_entrypoint_info(ctx.ep,
RGWSI_Bucket::get_entrypoint_meta_key(bucket),
&entry_point, &ot, &ep_mtime, &attrs, y);
if (ret < 0) {
ot.generate_new_write_ver(cct);
- ret = svc.bucket->store_linked_bucket_info(op->ctx(), info, false, ep_mtime, &ot.write_version, &attrs, true, y);
+ ret = svc.bucket->store_linked_bucket_info(ctx.bi, info, false, ep_mtime, &ot.write_version, &attrs, true, y);
if (ret < 0) {
ldout(cct, 0) << "ERROR: failed to put_linked_bucket_info(): " << ret << dendl;
return ret;
RGWObjVersionTracker *objv_tracker,
optional_yield y)
{
- return bi_be_handler->call([&](RGWSI_MetaBackend_Handler::Op *op) {
+ return call([&](RGWSI_Bucket_X_Ctx& ctx) {
rgw_bucket& bucket = bucket_info.bucket;
if (!bucket_info.has_instance_obj) {
/* an old bucket object, need to convert it */
- int ret = convert_old_bucket_info(op, bucket, y);
+ int ret = convert_old_bucket_info(ctx, bucket, y);
if (ret < 0) {
ldout(cct, 0) << "ERROR: failed converting old bucket info: " << ret << dendl;
return ret;
}
}
- return do_store_bucket_instance_info(op,
+ return do_store_bucket_instance_info(ctx.bi,
bucket,
bucket_info,
y,
ceph::real_time creation_time,
bool update_entrypoint)
{
- return bucket_be_handler->call([&](RGWSI_MetaBackend_Handler::Op *op) {
- return do_link_bucket(op, user_id, bucket, creation_time, update_entrypoint);
+ return bm_handler->call([&](RGWSI_Bucket_EP_Ctx& ctx) {
+ return do_link_bucket(ctx, user_id, bucket, creation_time, update_entrypoint);
});
}
-int RGWBucketCtl::do_link_bucket(RGWSI_MetaBackend_Handler::Op *op,
+int RGWBucketCtl::do_link_bucket(RGWSI_Bucket_EP_Ctx& ctx,
const rgw_user& user_id,
const rgw_bucket& bucket,
ceph::real_time creation_time,
if (update_entrypoint) {
meta_key = RGWSI_Bucket::get_entrypoint_meta_key(bucket);
- ret = svc.bucket->read_bucket_entrypoint_info(op->ctx(),
+ ret = svc.bucket->read_bucket_entrypoint_info(ctx,
meta_key,
&ep, &ot,
nullptr, &attrs);
ep.linked = true;
ep.owner = user_id;
ep.bucket = bucket;
- ret = svc.bucket->store_bucket_entrypoint_info(op->ctx(), meta_key, ep, false, real_time(), &attrs, &ot);
+ ret = svc.bucket->store_bucket_entrypoint_info(ctx, meta_key, ep, false, real_time(), &attrs, &ot);
if (ret < 0)
goto done_err;
return 0;
done_err:
- int r = do_unlink_bucket(op, user_id, bucket, true);
+ int r = do_unlink_bucket(ctx, user_id, bucket, true);
if (r < 0) {
ldout(cct, 0) << "ERROR: failed unlinking bucket on error cleanup: "
<< cpp_strerror(-r) << dendl;
int RGWBucketCtl::unlink_bucket(const rgw_user& user_id, const rgw_bucket& bucket, bool update_entrypoint)
{
- return bucket_be_handler->call([&](RGWSI_MetaBackend_Handler::Op *op) {
- return do_unlink_bucket(op, user_id, bucket, update_entrypoint);
+ return bm_handler->call([&](RGWSI_Bucket_EP_Ctx& ctx) {
+ return do_unlink_bucket(ctx, user_id, bucket, update_entrypoint);
});
}
-int RGWBucketCtl::do_unlink_bucket(RGWSI_MetaBackend_Handler::Op *op,
+int RGWBucketCtl::do_unlink_bucket(RGWSI_Bucket_EP_Ctx& ctx,
const rgw_user& user_id,
const rgw_bucket& bucket,
bool update_entrypoint)
RGWObjVersionTracker ot;
map<string, bufferlist> attrs;
string meta_key = RGWSI_Bucket::get_entrypoint_meta_key(bucket);
- ret = svc.bucket->read_bucket_entrypoint_info(op->ctx(), meta_key, &ep, &ot, nullptr, &attrs);
+ ret = svc.bucket->read_bucket_entrypoint_info(ctx, meta_key, &ep, &ot, nullptr, &attrs);
if (ret == -ENOENT)
return 0;
if (ret < 0)
}
ep.linked = false;
- return svc.bucket->store_bucket_entrypoint_info(op->ctx(), meta_key, ep, false, real_time(), &attrs, &ot);
+ return svc.bucket->store_bucket_entrypoint_info(ctx, meta_key, ep, false, real_time(), &attrs, &ot);
}
int RGWBucketCtl::read_bucket_stats(const rgw_bucket& bucket,
RGWBucketEnt *result,
optional_yield y)
{
- return bi_be_handler->call([&](RGWSI_MetaBackend_Handler::Op *op) {
- return svc.bucket->read_bucket_stats(op->ctx(), bucket, result, y);
+ return call([&](RGWSI_Bucket_X_Ctx& ctx) {
+ return svc.bucket->read_bucket_stats(ctx, bucket, result, y);
});
}
int RGWBucketCtl::read_buckets_stats(map<string, RGWBucketEnt>& m,
optional_yield y)
{
- return bi_be_handler->call([&](RGWSI_MetaBackend_Handler::Op *op) {
- return svc.bucket->read_buckets_stats(op->ctx(), m, y);
+ return call([&](RGWSI_Bucket_X_Ctx& ctx) {
+ return svc.bucket->read_buckets_stats(ctx, m, y);
});
}
/* create first backend handler for bucket entrypoints */
- int r = svc.meta->create_be_handler(RGWSI_MetaBackend::Type::MDBE_SOBJ, &ep_be_handler);
+ RGWSI_MetaBackend_Handler *ep_handler;
+
+ int r = svc.meta->create_be_handler(RGWSI_MetaBackend::Type::MDBE_SOBJ, &ep_handler);
if (r < 0) {
ldout(ctx(), 0) << "ERROR: failed to create be handler: r=" << r << dendl;
return r;
}
- RGWSI_MetaBackend_Handler_SObj *ep_bh = static_cast<RGWSI_MetaBackend_Handler_SObj *>(ep_be_handler);
+ ep_be_handler = ep_handler;
+
+ RGWSI_MetaBackend_Handler_SObj *ep_bh = static_cast<RGWSI_MetaBackend_Handler_SObj *>(ep_handler);
auto ep_module = new RGWSI_Bucket_Module(svc);
ep_be_module.reset(ep_module);
/* create a second backend handler for bucket instance */
- r = svc.meta->create_be_handler(RGWSI_MetaBackend::Type::MDBE_SOBJ, &bi_be_handler);
+ RGWSI_MetaBackend_Handler *bi_handler;
+
+ r = svc.meta->create_be_handler(RGWSI_MetaBackend::Type::MDBE_SOBJ, &bi_handler);
if (r < 0) {
ldout(ctx(), 0) << "ERROR: failed to create be handler: r=" << r << dendl;
return r;
}
- RGWSI_MetaBackend_Handler_SObj *bi_bh = static_cast<RGWSI_MetaBackend_Handler_SObj *>(bi_be_handler);
+ bi_be_handler = bi_handler;
+
+ RGWSI_MetaBackend_Handler_SObj *bi_bh = static_cast<RGWSI_MetaBackend_Handler_SObj *>(bi_handler);
auto bi_module = new RGWSI_BucketInstance_Module(svc);
bi_be_module.reset(bi_module);
return 0;
}
-int RGWSI_Bucket::read_bucket_entrypoint_info(RGWSI_MetaBackend::Context *ctx,
+int RGWSI_Bucket::read_bucket_entrypoint_info(RGWSI_Bucket_EP_Ctx& ctx,
const string& key,
RGWBucketEntryPoint *entry_point,
RGWObjVersionTracker *objv_tracker,
auto params = RGWSI_MBSObj_GetParams(&bl, pattrs, pmtime).set_cache_info(cache_info)
.set_refresh_version(refresh_version);
- int ret = svc.meta_be->get_entry(ctx, key, params, objv_tracker);
+ int ret = svc.meta_be->get_entry(ctx.get(), key, params, objv_tracker);
if (ret < 0) {
return ret;
}
return 0;
}
-int RGWSI_Bucket::store_bucket_entrypoint_info(RGWSI_MetaBackend::Context *ctx,
+int RGWSI_Bucket::store_bucket_entrypoint_info(RGWSI_Bucket_EP_Ctx& ctx,
const string& key,
RGWBucketEntryPoint& info,
bool exclusive,
RGWSI_MBSObj_PutParams params(bl, pattrs, mtime, exclusive);
- int ret = svc.meta_be->put_entry(ctx, key, params, objv_tracker);
+ int ret = svc.meta_be->put_entry(ctx.get(), key, params, objv_tracker);
if (ret == -EEXIST) {
/* well, if it's exclusive we shouldn't overwrite it, because we might race with another
* bucket operation on this specific bucket (e.g., being synced from the master), but
return ret;
}
-int RGWSI_Bucket::remove_bucket_entrypoint_info(RGWSI_MetaBackend::Context *ctx,
+int RGWSI_Bucket::remove_bucket_entrypoint_info(RGWSI_Bucket_EP_Ctx& ctx,
const string& key,
optional_yield y)
{
RGWSI_MBSObj_RemoveParams params;
- return svc.meta_be->remove_entry(ctx, key, params, objv_tracker, y);
+ return svc.meta_be->remove_entry(ctx.get(), key, params, objv_tracker, y);
}
-int RGWSI_Bucket::read_bucket_instance_info(RGWSI_MetaBackend::Context *ctx,
+int RGWSI_Bucket::read_bucket_instance_info(RGWSI_Bucket_BI_Ctx& ctx,
const string& key,
RGWBucketInfo *info,
real_time *pmtime, map<string, bufferlist> *pattrs,
return 0;
}
-int RGWSI_Bucket::do_read_bucket_instance_info(RGWSI_MetaBackend::Context *ctx,
+int RGWSI_Bucket::do_read_bucket_instance_info(RGWSI_Bucket_BI_Ctx& ctx,
const string& key,
RGWBucketInfo *info,
real_time *pmtime, map<string, bufferlist> *pattrs,
auto params = RGWSI_MBSObj_GetParams(&bl, pattrs, pmtime).set_cache_info(cache_info)
.set_refresh_version(refresh_version);
- int ret = svc.meta_be->get_entry(ctx, key, params, &ot, y);
+ int ret = svc.meta_be->get_entry(ctx.get(), key, params, &ot, y);
if (ret < 0) {
return ret;
}
return 0;
}
-int RGWSI_Bucket::read_bucket_info(RGWSI_MetaBackend::Context *ctx,
+int RGWSI_Bucket::read_bucket_info(RGWSI_Bucket_X_Ctx& ctx,
const rgw_bucket& bucket,
RGWBucketInfo *info,
real_time *pmtime,
}
if (!bucket.bucket_id.empty()) {
- return read_bucket_instance_info(ctx, get_bi_meta_key(bucket),
+ return read_bucket_instance_info(ctx.bi, get_bi_meta_key(bucket),
info,
pmtime, pattrs,
&cache_info, refresh_version,
real_time ep_mtime;
RGWObjVersionTracker ot;
rgw_cache_entry_info entry_cache_info;
- int ret = read_bucket_entrypoint_info(ctx, bucket_entry,
+ int ret = read_bucket_entrypoint_info(ctx.ep, bucket_entry,
&entry_point, &ot, &ep_mtime, pattrs,
&entry_cache_info, refresh_version,
y);
/* read bucket instance info */
- ret = read_bucket_instance_info(ctx, get_bi_meta_key(entry_point.bucket),
+ ret = read_bucket_instance_info(ctx.bi, get_bi_meta_key(entry_point.bucket),
&e.info, &e.mtime, &e.attrs,
&cache_info, refresh_version, y);
e.info.ep_objv = ot.read_version;
}
-int RGWSI_Bucket::store_bucket_instance_info(RGWSI_MetaBackend::Context *ctx,
+int RGWSI_Bucket::store_bucket_instance_info(RGWSI_Bucket_BI_Ctx& ctx,
const string& key,
RGWBucketInfo& info,
bool exclusive,
RGWSI_MBSObj_PutParams params(bl, pattrs, mtime, exclusive);
- int ret = svc.meta_be->put_entry(ctx, key, params, &info.objv_tracker, y);
+ int ret = svc.meta_be->put_entry(ctx.get(), key, params, &info.objv_tracker, y);
if (ret == -EEXIST) {
/* well, if it's exclusive we shouldn't overwrite it, because we might race with another
* bucket operation on this specific bucket (e.g., being synced from the master), but
return ret;
}
-int RGWSI_Bucket::remove_bucket_instance_info(RGWSI_MetaBackend::Context *ctx,
+int RGWSI_Bucket::remove_bucket_instance_info(RGWSI_Bucket_BI_Ctx& ctx,
const string& key,
RGWObjVersionTracker *objv_tracker,
optional_yield y)
{
RGWSI_MBSObj_RemoveParams params;
- return svc.meta_be->remove_entry(ctx, key, params, objv_tracker, y);
+ return svc.meta_be->remove_entry(ctx.get(), key, params, objv_tracker, y);
}
int RGWSI_Bucket::read_bucket_stats(const RGWBucketInfo& bucket_info,
return 0;
}
-int RGWSI_Bucket::read_bucket_stats(RGWSI_MetaBackend::Context *ctx,
+int RGWSI_Bucket::read_bucket_stats(RGWSI_Bucket_X_Ctx& ctx,
const rgw_bucket& bucket,
RGWBucketEnt *ent,
optional_yield y)
return read_bucket_stats(bucket_info, ent, y);
}
-int RGWSI_Bucket::read_buckets_stats(RGWSI_MetaBackend::Context *ctx,
+int RGWSI_Bucket::read_buckets_stats(RGWSI_Bucket_X_Ctx& ctx,
map<string, RGWBucketEnt>& m,
optional_yield y)
{
#include "rgw/rgw_service.h"
#include "svc_meta_be.h"
+#include "svc_bucket_types.h"
class RGWSI_Zone;
class RGWSI_SysObj;
using RGWChainedCacheImpl_bucket_info_cache_entry = RGWChainedCacheImpl<bucket_info_cache_entry>;
unique_ptr<RGWChainedCacheImpl_bucket_info_cache_entry> binfo_cache;
- RGWSI_MetaBackend_Handler *ep_be_handler;
+ RGWSI_Bucket_BE_Handler ep_be_handler;
std::unique_ptr<RGWSI_MetaBackend::Module> ep_be_module;
- RGWSI_MetaBackend_Handler *bi_be_handler;
+ RGWSI_BucketInstance_BE_Handler bi_be_handler;
std::unique_ptr<RGWSI_MetaBackend::Module> bi_be_module;
int do_start() override;
- int do_read_bucket_instance_info(RGWSI_MetaBackend::Context *ctx,
+ int do_read_bucket_instance_info(RGWSI_Bucket_BI_Ctx& ctx,
const string& key,
RGWBucketInfo *info,
real_time *pmtime,
static string get_entrypoint_meta_key(const rgw_bucket& bucket);
static string get_bi_meta_key(const rgw_bucket& bucket);
- RGWSI_MetaBackend_Handler *get_ep_be_handler() {
+ RGWSI_Bucket_BE_Handler& get_ep_be_handler() {
return ep_be_handler;
}
- RGWSI_MetaBackend_Handler *get_bi_be_handler() {
+ RGWSI_BucketInstance_BE_Handler& get_bi_be_handler() {
return bi_be_handler;
}
RGWSI_SyncModules *_sync_modules);
- int read_bucket_entrypoint_info(RGWSI_MetaBackend::Context *ctx,
+ int read_bucket_entrypoint_info(RGWSI_Bucket_EP_Ctx& ctx,
const string& key,
RGWBucketEntryPoint *entry_point,
RGWObjVersionTracker *objv_tracker,
rgw_cache_entry_info *cache_info = nullptr,
boost::optional<obj_version> refresh_version = boost::none);
- int store_bucket_entrypoint_info(RGWSI_MetaBackend::Context *ctx,
+ int store_bucket_entrypoint_info(RGWSI_Bucket_EP_Ctx& ctx,
const string& key,
RGWBucketEntryPoint& info,
bool exclusive,
RGWObjVersionTracker *objv_tracker,
optional_yield y);
- int remove_bucket_entrypoint_info(RGWSI_MetaBackend::Context *ctx,
+ int remove_bucket_entrypoint_info(RGWSI_Bucket_EP_Ctx& ctx,
const string& key,
RGWObjVersionTracker *objv_tracker,
optional_yield y);
- int read_bucket_instance_info(RGWSI_MetaBackend::Context *ctx,
+ int read_bucket_instance_info(RGWSI_Bucket_BI_Ctx& ctx,
const string& key,
RGWBucketInfo *info,
real_time *pmtime,
rgw_cache_entry_info *cache_info = nullptr,
boost::optional<obj_version> refresh_version = boost::none);
- int read_bucket_info(RGWSI_MetaBackend::Context *ctx,
+ int read_bucket_info(RGWSI_Bucket_X_Ctx& ep_ctx,
const rgw_bucket& bucket,
RGWBucketInfo *info,
real_time *pmtime,
boost::optional<obj_version> refresh_version,
optional_yield y);
- int store_bucket_instance_info(RGWSI_MetaBackend::Context *ctx,
+ int store_bucket_instance_info(RGWSI_Bucket_BI_Ctx& ctx,
const string& key,
RGWBucketInfo& info,
bool exclusive,
map<string, bufferlist> *pattrs,
optional_yield y);
- int remove_bucket_instance_info(RGWSI_MetaBackend::Context *ctx,
+ int remove_bucket_instance_info(RGWSI_Bucket_BI_Ctx& ctx,
const string& key,
RGWObjVersionTracker *objv_tracker,
optional_yield y);
- int read_bucket_stats(RGWSI_MetaBackend::Context *ctx,
+ int read_bucket_stats(RGWSI_Bucket_X_Ctx& ctx,
const rgw_bucket& bucket,
RGWBucketEnt *ent,
optional_yield y);
- int read_buckets_stats(RGWSI_MetaBackend::Context *ctx,
+ int read_buckets_stats(RGWSI_Bucket_X_Ctx& ctx,
map<string, RGWBucketEnt>& m,
optional_yield y);
};