orig_size = state->accounted_size;
}
- bool versioned_target = (meta.olh_epoch > 0 || !obj.key.instance.empty());
+ bool versioned_target = (meta.olh_epoch && *meta.olh_epoch > 0) ||
+ !obj.key.instance.empty();
bool versioned_op = (target->versioning_enabled() || is_olh || versioned_target);
target->invalidate_state();
state = NULL;
- if (versioned_op) {
- r = store->set_olh(target->get_ctx(), target->get_bucket_info(), obj, false, NULL, meta.olh_epoch, real_time(), false, meta.zones_trace);
+ if (versioned_op && meta.olh_epoch) {
+ r = store->set_olh(target->get_ctx(), target->get_bucket_info(), obj, false, NULL, *meta.olh_epoch, real_time(), false, meta.zones_trace);
if (r < 0) {
return r;
}
int flags;
const char *if_match;
const char *if_nomatch;
- uint64_t olh_epoch;
+ boost::optional<uint64_t> olh_epoch;
ceph::real_time delete_at;
bool canceled;
const string *user_data;
MetaParams() : mtime(NULL), rmattrs(NULL), data(NULL), manifest(NULL), ptag(NULL),
remove_objs(NULL), category(RGW_OBJ_CATEGORY_MAIN), flags(0),
- if_match(NULL), if_nomatch(NULL), olh_epoch(0), canceled(false), user_data(nullptr), zones_trace(nullptr),
+ if_match(NULL), if_nomatch(NULL), canceled(false), user_data(nullptr), zones_trace(nullptr),
modify_tail(false), completeMultipart(false) {}
} meta;
uint64_t max_chunk_size;
bool versioned_object;
- uint64_t olh_epoch;
+ boost::optional<uint64_t> olh_epoch;
string version_id;
protected:
data_ofs(0),
max_chunk_size(0),
versioned_object(versioned),
- olh_epoch(0),
bucket(_b),
obj_str(_o),
unique_tag(_t) {}