obj_op.meta.ptag = &s->req_id; /* use req_id as operation tag */
obj_op.meta.owner = s->owner.get_id();
obj_op.meta.flags = PUT_OBJ_CREATE;
+ obj_op.meta.completeMultipart = true;
op_ret = obj_op.write_meta(ofs, attrs);
if (op_ret < 0)
meta.canceled = false;
/* update quota cache */
- store->quota_handler->update_stats(meta.owner, bucket, (orig_exists ? 0 : 1), size, orig_size);
+ if (meta.completeMultipart) {
+ store->quota_handler->update_stats(meta.owner, bucket, (orig_exists ? 0 : 1), 0, orig_size);
+ } else {
+ store->quota_handler->update_stats(meta.owner, bucket, (orig_exists ? 0 : 1), size, orig_size);
+ }
return 0;
ceph::real_time delete_at;
bool canceled;
const string *user_data;
+ bool completeMultipart;
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) {}
+ if_match(NULL), if_nomatch(NULL), olh_epoch(0), canceled(false), user_data(nullptr), completeMultipart(false) {}
} meta;
explicit Write(RGWRados::Object *_target) : target(_target) {}