op.set_alloc_hint2(0, 0, alloc_hint_flags);
}
+void RadosWriter::set_head_obj(const rgw_obj& head)
+{
+ head_obj = head;
+}
+
int RadosWriter::set_stripe_obj(const rgw_raw_obj& raw_obj)
{
return rgw_get_rados_ref(dpp, store->get_rados_handle(), raw_obj,
RGWSI_Tier_RADOS::raw_obj_to_obj(head_obj.bucket, stripe_obj, &head_obj);
head_obj.index_hash_source = target_obj.key.name;
+ // point part uploads at the part head instead of the final multipart head
+ writer.set_head_obj(head_obj);
+
r = writer.set_stripe_obj(stripe_obj);
if (r < 0) {
return r;
RGWRados *const store;
const RGWBucketInfo& bucket_info;
RGWObjectCtx& obj_ctx;
- const rgw_obj head_obj;
+ rgw_obj head_obj;
rgw_rados_ref stripe_obj; // current stripe object
RawObjSet written; // set of written objects for deletion
const DoutPrefixProvider *dpp;
// add alloc hint to osd
void add_write_hint(librados::ObjectWriteOperation& op);
+ // change the head object
+ void set_head_obj(const rgw_obj& head);
+
// change the current stripe object
int set_stripe_obj(const rgw_raw_obj& obj);