string part_num;
list<struct put_obj_aio_info> pending;
size_t max_chunks = RGW_MAX_PENDING_CHUNKS;
+ bool created_obj = false;
ret = -EINVAL;
if (!s->object) {
if (ret < 0)
goto done;
+ created_obj = true;
+
hash.Update((unsigned char *)data, len);
info.handle = handle;
info.data = data;
ret = rgwstore->clone_obj(dst_obj, 0, obj, 0, s->obj_size, attrs);
if (ret < 0)
goto done;
- ret = rgwstore->delete_obj(s->user.user_id, obj);
- if (ret < 0)
- goto done;
+ if (created_obj) {
+ ret = rgwstore->delete_obj(s->user.user_id, obj);
+ if (ret < 0)
+ goto done;
+ }
} else {
ret = rgwstore->put_obj_meta(s->user.user_id, obj, NULL, attrs, false);
if (ret < 0)
range_iter++;
range.len += next.len;
}
- RGW_LOG(20) << "calling op.clone_range(dst_ofs=" << range.dst_ofs << ", src.object=" << range.src.object << " range.src_ofs=" << range.src_ofs << " range.len=" << range.len << dendl;
- op.clone_range(range.dst_ofs, range.src.object, range.src_ofs, range.len);
+ if (range.len) {
+ RGW_LOG(20) << "calling op.clone_range(dst_ofs=" << range.dst_ofs << ", src.object=" << range.src.object << " range.src_ofs=" << range.src_ofs << " range.len=" << range.len << dendl;
+ op.clone_range(range.dst_ofs, range.src.object, range.src_ofs, range.len);
+ }
}
bufferlist outbl;