bool need_stats)
{
rgw::sal::RGWRadosUser user(store, user_id);
-
return user.list_buckets(marker, end_marker, max, need_stats, buckets);
}
// like RGWRados::delete_bucket -- excepting no bucket_index work.
r = bucket_ctl->remove_bucket_entrypoint_info(old_bucket, y,
RGWBucketCtl::Bucket::RemoveParams()
- .set_objv_tracker(&ep_objv));
+ .set_objv_tracker(&ep_data.ep_objv));
if (r < 0) {
set_err_msg(err_msg, "failed to unlink old bucket endpoint " + old_bucket.tenant + "/" + old_bucket.name);
return r;
RGWBucketEntryPoint ep;
RGWObjVersionTracker ot;
-
+ RGWObjVersionTracker& rot = (pinfo) ? pinfo->ep_objv : ot;
map<string, bufferlist> attrs, *pattrs = nullptr;
-
string meta_key;
if (update_entrypoint) {
} else {
ret = svc.bucket->read_bucket_entrypoint_info(ctx,
meta_key,
- &ep, &ot,
+ &ep, &rot,
nullptr, &attrs,
y);
if (ret < 0 && ret != -ENOENT) {
ret = ctl.user->add_bucket(user_id, bucket, creation_time);
if (ret < 0) {
- ldout(cct, 0) << "ERROR: error adding bucket to user directory: user=" << user_id
- << " bucket=" << bucket << " err=" << cpp_strerror(-ret) << dendl;
+ ldout(cct, 0) << "ERROR: error adding bucket to user directory:"
+ << " user=" << user_id
+ << " bucket=" << bucket
+ << " err=" << cpp_strerror(-ret)
+ << dendl;
goto done_err;
}
ep.linked = true;
ep.owner = user_id;
ep.bucket = bucket;
- ret = svc.bucket->store_bucket_entrypoint_info(ctx, meta_key, ep, false,
- real_time(), pattrs, &ot, y);
+ ret = svc.bucket->store_bucket_entrypoint_info(
+ ctx, meta_key, ep, false, real_time(), pattrs, &rot, y);
if (ret < 0)
goto done_err;
return 0;
+
done_err:
int r = do_unlink_bucket(ctx, user_id, bucket, y, true);
if (r < 0) {
};
struct rgw_ep_info {
- RGWBucketEntryPoint &ep;
- map<string, bufferlist>& attrs;
- rgw_ep_info(RGWBucketEntryPoint &ep, map<string, bufferlist>& attrs)
- : ep(ep), attrs(attrs) { }
+ RGWBucketEntryPoint &ep;
+ map<std::string, buffer::list>& attrs;
+ RGWObjVersionTracker ep_objv;
+ rgw_ep_info(RGWBucketEntryPoint &ep, map<string, bufferlist>& attrs)
+ : ep(ep), attrs(attrs) {}
};
class RGWBucketCtl