size_t actual = MIN(bl.length(), p->second);
bl.splice(0, actual, &r.first);
r.second = p->second;
+ total_intended_len += r.second;
}
}
ldout(cct, 20) << " s at end" << dendl;
pair<bufferlist, uint64_t>& r = partial[tofs];
r.second = tlen;
+ total_intended_len += r.second;
break;
}
size_t gap = MIN(s->first - bl_off, tlen);
ldout(cct, 20) << " s gap " << gap << ", skipping" << dendl;
r.second = gap;
+ total_intended_len += r.second;
bl_off += gap;
tofs += gap;
tlen -= gap;
pair<bufferlist, uint64_t>& r = partial[tofs];
bl.splice(0, actual, &r.first);
r.second = actual;
+ total_intended_len += r.second;
bl_off += actual;
tofs += actual;
tlen -= actual;
class StripedReadResult {
// offset -> (data, intended length)
map<uint64_t, pair<bufferlist, uint64_t> > partial;
+ uint64_t total_intended_len = 0; //sum of partial.second.second
public:
void add_partial_result(