bool truncated;
int marker = 0;
int ret;
+ uint64_t parts_accounted_size = 0;
do {
ret = list_multipart_parts(store, bucket_info, cct,
remove_objs.push_back(key);
}
}
+ parts_accounted_size += obj_part.accounted_size;
}
} while (truncated);
if (!remove_objs.empty()) {
del_op.params.remove_objs = &remove_objs;
}
+
+ del_op.params.abortmp = true;
+ del_op.params.parts_accounted_size = parts_accounted_size;
// and also remove the metadata obj
ret = del_op.delete_obj();
}
uint64_t obj_accounted_size = state->accounted_size;
+ if(params.abortmp) {
+ obj_accounted_size = params.parts_accounted_size;
+ }
+
if (!real_clock::is_zero(params.expiration_time)) {
bufferlist bl;
real_time delete_at;
ceph::real_time mtime; /* for setting delete marker mtime */
bool high_precision_time;
rgw_zone_set *zones_trace;
+ bool abortmp;
+ uint64_t parts_accounted_size;
- DeleteParams() : versioning_status(0), olh_epoch(0), bilog_flags(0), remove_objs(NULL), high_precision_time(false), zones_trace(nullptr) {}
+ DeleteParams() : versioning_status(0), olh_epoch(0), bilog_flags(0), remove_objs(NULL), high_precision_time(false), zones_trace(nullptr), abortmp(false), parts_accounted_size(0) {}
} params;
struct DeleteResult {