*
* - RGWObjState. Below are omitted from that struct
* as they seem in-memory variables
- * * is_atomic, has_atts, exists, prefetch_data, keep_tail,
+ * * is_atomic, has_atts, exists, prefetch_data,
* - RGWObjManifest
*
* Extra field added "IsMultipart" to flag multipart uploads,
tail_placement_rule.storage_class = RGW_STORAGE_CLASS_STANDARD;
}
manifest.set_prefix(cur_manifest->get_prefix());
- astate->keep_tail = true;
+ keep_tail = true;
}
manifest.set_multipart_part_rule(store->ctx()->_conf->rgw_obj_stripe_size, cur_part_num);
obj_op.meta.user_data = user_data;
obj_op.meta.zones_trace = zones_trace;
obj_op.meta.modify_tail = true;
+ obj_op.meta.keep_tail = keep_tail;
obj_op.meta.appendable = true;
//Add the append part number
bufferlist cur_part_num_bl;
uint64_t *cur_accounted_size;
std::string cur_etag;
const std::string unique_tag;
+ bool keep_tail;
RGWObjManifest *cur_manifest;
: 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)
+ unique_tag(unique_tag), keep_tail(false), cur_manifest(nullptr)
{}
int prepare(optional_yield y) override;
int complete(size_t accounted_size, const std::string& etag,
pmanifest = &manifest;
} else {
pmanifest = amanifest;
- /* don't send the object's tail for garbage collection */
- astate->keep_tail = true;
}
if (copy_first) {
int RGWRados::Object::complete_atomic_modification(const DoutPrefixProvider *dpp, bool keep_tail)
{
- if ((!manifest) || state->keep_tail || keep_tail)
+ if ((!manifest) || keep_tail)
return 0;
cls_rgw_obj_chain chain;
data = rhs.data;
}
prefetch_data = rhs.prefetch_data;
- keep_tail = rhs.keep_tail;
is_olh = rhs.is_olh;
objv_tracker = rhs.objv_tracker;
pg_ver = rhs.pg_ver;
bool has_data{false};
bufferlist data;
bool prefetch_data{false};
- bool keep_tail{false};
bool is_olh{false};
bufferlist olh_tag;
uint64_t pg_ver{false};