ent.meta.etag = part.etag;
uint64_t cur_total_len = obj_ofs;
- uint64_t start_ofs = 0, end_ofs = ent.meta.size;
+ uint64_t start_ofs = 0, end_ofs = ent.meta.size - 1;
if (!found_start && cur_total_len + ent.meta.size > (uint64_t)ofs) {
start_ofs = ofs - obj_ofs;
obj_ofs += ent.meta.size;
if (!found_end && obj_ofs > (uint64_t)end) {
- end_ofs = end - cur_total_len + 1;
+ end_ofs = end - cur_total_len;
found_end = true;
}
if (found_start) {
if (cb) {
+ dout(20) << "iterate_slo_parts()"
+ << " obj=" << part.obj_name
+ << " start_ofs=" << start_ofs
+ << " end_ofs=" << end_ofs
+ << dendl;
+
// SLO is a Swift thing, and Swift has no knowledge of S3 Policies.
int r = cb(part.bucket, ent, part.bucket_acl,
(part.bucket_policy ?
part.obj_name = obj_name;
part.size = entry.size_bytes;
part.etag = entry.etag;
- ldout(s->cct, 20) << "slo_part: ofs=" << ofs
- << " bucket=" << part.bucket
+ ldout(s->cct, 20) << "slo_part: bucket=" << part.bucket
<< " obj=" << part.obj_name
<< " size=" << part.size
<< " etag=" << part.etag
}
total_len = end - ofs + 1;
+ ldout(s->cct, 20) << "Requested: ofs=" << ofs
+ << " end=" << end
+ << " total=" << total_len
+ << dendl;
r = iterate_slo_parts(s->cct, store, ofs, end, slo_parts,
get_obj_user_manifest_iterate_cb, (void *)this);