rgw_obj& src_obj,
RGWBucketInfo& dest_bucket_info,
RGWBucketInfo& src_bucket_info,
+ time_t *src_mtime,
time_t *mtime,
const time_t *mod_ptr,
const time_t *unmod_ptr,
}
}
+ if (src_mtime) {
+ *src_mtime = set_mtime;
+ }
+
if (petag) {
map<string, bufferlist>::iterator iter = src_attrs.find(RGW_ATTR_ETAG);
if (iter != src_attrs.end()) {
rgw_obj& src_obj,
RGWBucketInfo& dest_bucket_info,
RGWBucketInfo& src_bucket_info,
+ time_t *src_mtime,
time_t *mtime,
const time_t *mod_ptr,
const time_t *unmod_ptr,
{
int ret;
uint64_t total_len, obj_size;
- time_t lastmod;
rgw_obj shadow_obj = dest_obj;
string shadow_oid;
if (remote_src || !source_zone.empty()) {
return fetch_remote_obj(obj_ctx, user_id, client_id, op_id, info, source_zone,
- dest_obj, src_obj, dest_bucket_info, src_bucket_info, mtime, mod_ptr,
+ dest_obj, src_obj, dest_bucket_info, src_bucket_info, src_mtime, mtime, mod_ptr,
unmod_ptr, if_match, if_nomatch, replace_attrs, attrs, category,
olh_epoch, version_id, ptag, petag, err, progress_cb, progress_data);
}
read_op.conds.if_match = if_match;
read_op.conds.if_nomatch = if_nomatch;
read_op.params.attrs = &src_attrs;
- read_op.params.lastmod = &lastmod;
+ read_op.params.lastmod = src_mtime;
read_op.params.read_size = &total_len;
read_op.params.obj_size = &obj_size;
read_op.params.perr = err;
extern void dump_content_length(struct req_state *s, uint64_t len);
extern void dump_etag(struct req_state *s, const char *etag);
extern void dump_epoch_header(struct req_state *s, const char *name, time_t t);
+extern void dump_time_header(struct req_state *s, const char *name, time_t t);
extern void dump_last_modified(struct req_state *s, time_t t);
extern void abort_early(struct req_state *s, RGWOp *op, int err);
extern void dump_range(struct req_state *s, uint64_t ofs, uint64_t end, uint64_t total_size);