processor.emplace<MultipartObjectProcessor>(
&*aio, store, s->bucket_info, pdest_placement,
s->owner.get_id(), obj_ctx, obj,
- multipart_upload_id, multipart_part_num, multipart_part_str, this);
+ multipart_upload_id, multipart_part_num, multipart_part_str,
+ this, s->yield);
} else if(append) {
if (s->bucket_info.versioned()) {
op_ret = -ERR_INVALID_BUCKET_STATE;
pdest_placement = &s->dest_placement;
processor.emplace<AppendObjectProcessor>(
&*aio, store, s->bucket_info, pdest_placement, s->bucket_owner.get_id(),obj_ctx, obj,
- s->req_id, position, &cur_accounted_size, this);
+ s->req_id, position, &cur_accounted_size, this, s->yield);
} else {
if (s->bucket_info.versioning_enabled()) {
if (!version_id.empty()) {
pdest_placement = &s->dest_placement;
processor.emplace<AtomicObjectProcessor>(
&*aio, store, s->bucket_info, pdest_placement,
- s->bucket_owner.get_id(), obj_ctx, obj, olh_epoch, s->req_id, this);
+ s->bucket_owner.get_id(), obj_ctx, obj, olh_epoch,
+ s->req_id, this, s->yield);
}
op_ret = processor->prepare();
&s->dest_placement,
s->bucket_owner.get_id(),
*static_cast<RGWObjectCtx*>(s->obj_ctx),
- obj, 0, s->req_id, this);
+ obj, 0, s->req_id, this, s->yield);
op_ret = processor.prepare();
if (op_ret < 0) {
return;
using namespace rgw::putobj;
AtomicObjectProcessor processor(&*aio, store, binfo, &s->dest_placement, bowner.get_id(),
- obj_ctx, obj, 0, s->req_id, this);
+ obj_ctx, obj, 0, s->req_id, this, s->yield);
op_ret = processor.prepare();
if (op_ret < 0) {
RGWSI_RADOS::Obj stripe_obj; // current stripe object
RawObjSet written; // set of written objects for deletion
const DoutPrefixProvider *dpp;
+ optional_yield y;
public:
RadosWriter(Aio *aio, RGWRados *store, const RGWBucketInfo& bucket_info,
- RGWObjectCtx& obj_ctx, const rgw_obj& head_obj, const DoutPrefixProvider *dpp)
+ RGWObjectCtx& obj_ctx, const rgw_obj& head_obj,
+ const DoutPrefixProvider *dpp, optional_yield y)
: aio(aio), store(store), bucket_info(bucket_info),
- obj_ctx(obj_ctx), head_obj(head_obj), dpp(dpp)
+ obj_ctx(obj_ctx), head_obj(head_obj), dpp(dpp), y(y)
{}
~RadosWriter();
const rgw_placement_rule *ptail_placement_rule,
const rgw_user& owner, RGWObjectCtx& obj_ctx,
const rgw_obj& head_obj,
- const DoutPrefixProvider* dpp)
+ const DoutPrefixProvider* dpp, optional_yield y)
: HeadObjectProcessor(0),
store(store), bucket_info(bucket_info),
owner(owner),
obj_ctx(obj_ctx), head_obj(head_obj),
- writer(aio, store, bucket_info, obj_ctx, head_obj, dpp),
+ writer(aio, store, bucket_info, obj_ctx, head_obj, dpp, y),
chunk(&writer, 0), stripe(&chunk, this, 0), dpp(dpp) {
if (ptail_placement_rule) {
tail_placement_rule = *ptail_placement_rule;
RGWObjectCtx& obj_ctx, const rgw_obj& head_obj,
std::optional<uint64_t> olh_epoch,
const std::string& unique_tag,
- const DoutPrefixProvider *dpp)
+ const DoutPrefixProvider *dpp, optional_yield y)
: ManifestObjectProcessor(aio, store, bucket_info, ptail_placement_rule,
- owner, obj_ctx, head_obj, dpp),
+ owner, obj_ctx, head_obj, dpp, y),
olh_epoch(olh_epoch), unique_tag(unique_tag)
{}
const rgw_obj& head_obj,
const std::string& upload_id, uint64_t part_num,
const std::string& part_num_str,
- const DoutPrefixProvider *dpp)
+ const DoutPrefixProvider *dpp, optional_yield y)
: ManifestObjectProcessor(aio, store, bucket_info, ptail_placement_rule,
- owner, obj_ctx, head_obj, dpp),
+ owner, obj_ctx, head_obj, dpp, y),
target_obj(head_obj), upload_id(upload_id),
part_num(part_num), part_num_str(part_num_str),
mp(head_obj.key.name, upload_id)
AppendObjectProcessor(Aio *aio, RGWRados *store, const RGWBucketInfo& bucket_info,
const rgw_placement_rule *ptail_placement_rule,
const rgw_user& owner, RGWObjectCtx& obj_ctx,const rgw_obj& head_obj,
- const std::string& unique_tag, uint64_t position, uint64_t *cur_accounted_size, const DoutPrefixProvider *dpp)
- : ManifestObjectProcessor(aio, store, bucket_info, ptail_placement_rule, owner, obj_ctx, head_obj, dpp),
+ const std::string& unique_tag, uint64_t position,
+ uint64_t *cur_accounted_size,
+ const DoutPrefixProvider *dpp, optional_yield y)
+ : ManifestObjectProcessor(aio, store, bucket_info, ptail_placement_rule,
+ owner, obj_ctx, head_obj, dpp, y),
position(position), cur_size(0), cur_accounted_size(cur_accounted_size),
unique_tag(unique_tag), cur_manifest(nullptr)
{}
using namespace rgw::putobj;
const rgw_placement_rule *ptail_rule = (dest_placement_rule ? &(*dest_placement_rule) : nullptr);
AtomicObjectProcessor processor(&aio, this, dest_bucket_info, ptail_rule, user_id,
- obj_ctx, dest_obj, olh_epoch, tag, dpp);
+ obj_ctx, dest_obj, olh_epoch, tag, dpp, null_yield);
RGWRESTConn *conn;
auto& zone_conn_map = svc.zone->get_zone_conn_map();
auto& zonegroup_conn_map = svc.zone->get_zonegroup_conn_map();
using namespace rgw::putobj;
AtomicObjectProcessor processor(&aio, this, dest_bucket_info, &dest_placement,
dest_bucket_info.owner, obj_ctx,
- dest_obj, olh_epoch, tag, dpp);
+ dest_obj, olh_epoch, tag, dpp, null_yield);
int ret = processor.prepare();
if (ret < 0)
return ret;