for (vector<extent_t>::const_iterator p = extents.begin(); p != extents.end(); ++p) {
_observe_read(p->first, p->second);
}
+ if (m_readahead_pos >= limit) {
+ m_lock.Unlock();
+ return extent_t(0, 0);
+ }
pair<uint64_t, uint64_t> extent = _compute_readahead(limit);
m_lock.Unlock();
return extent;
Readahead::extent_t Readahead::update(uint64_t offset, uint64_t length, uint64_t limit) {
m_lock.Lock();
_observe_read(offset, length);
+ if (m_readahead_pos >= limit) {
+ m_lock.Unlock();
+ return extent_t(0, 0);
+ }
extent_t extent = _compute_readahead(limit);
m_lock.Unlock();
return extent;
m_consec_read_bytes = 0;
m_readahead_trigger_pos = 0;
m_readahead_size = 0;
+ m_readahead_pos = 0;
}
m_last_pos = offset + length;
}