bool ObjectCacher::Object::is_cached(loff_t cur, loff_t left)
{
assert(oc->lock.is_locked());
- map<loff_t, BufferHead*>::iterator p = data_lower_bound(cur);
+ map<loff_t, BufferHead*>::const_iterator p = data_lower_bound(cur);
while (left > 0) {
if (p == data.end())
return false;
loff_t cur = ex.offset;
loff_t left = ex.length;
- map<loff_t, BufferHead*>::iterator p = data_lower_bound(ex.offset);
+ map<loff_t, BufferHead*>::const_iterator p = data_lower_bound(ex.offset);
while (left > 0) {
// at end?
if (p == data.end()) {
loff_t cur = ex.offset;
loff_t left = ex.length;
- map<loff_t, BufferHead*>::iterator p = data_lower_bound(ex.offset);
+ map<loff_t, BufferHead*>::const_iterator p = data_lower_bound(ex.offset);
while (left > 0) {
loff_t max = left;
complete = false;
}
- map<loff_t, BufferHead*>::iterator p = data_lower_bound(off);
+ map<loff_t, BufferHead*>::const_iterator p = data_lower_bound(off);
while (p != data.end()) {
BufferHead *bh = p->second;
if (bh->start() >= off + len)
// apply to bh's!
loff_t opos = start;
while (true) {
- map<loff_t, BufferHead*>::iterator p = ob->data_lower_bound(opos);
+ map<loff_t, BufferHead*>::const_iterator p = ob->data_lower_bound(opos);
if (p == ob->data.end())
break;
if (opos >= start+(loff_t)length) {
list <BufferHead*> hit;
// apply to bh's!
- for (map<loff_t, BufferHead*>::iterator p = ob->data_lower_bound(start);
+ for (map<loff_t, BufferHead*>::const_iterator p = ob->data_lower_bound(start);
p != ob->data.end();
++p) {
BufferHead *bh = p->second;
list<BufferHead*> blist;
bool clean = true;
ldout(cct, 10) << "flush " << *ob << " " << offset << "~" << length << dendl;
- for (map<loff_t,BufferHead*>::iterator p = ob->data_lower_bound(offset);
+ for (map<loff_t,BufferHead*>::const_iterator p = ob->data_lower_bound(offset);
p != ob->data.end();
++p) {
BufferHead *bh = p->second;
list<BufferHead*> blist;
Object *last_ob = NULL;
- set<BufferHead*, BufferHead::ptr_lt>::iterator it, p, q;
+ set<BufferHead*, BufferHead::ptr_lt>::const_iterator it, p, q;
// Buffer heads in dirty_or_tx_bh are sorted in ObjectSet/Object/offset
// order. But items in oset->objects are not sorted. So the iterator can
* @param offset object byte offset
* @return iterator pointing to buffer, or data.end()
*/
- map<loff_t,BufferHead*>::iterator data_lower_bound(loff_t offset) {
- map<loff_t,BufferHead*>::iterator p = data.lower_bound(offset);
+ map<loff_t,BufferHead*>::const_iterator data_lower_bound(loff_t offset) const {
+ map<loff_t,BufferHead*>::const_iterator p = data.lower_bound(offset);
if (p != data.begin() &&
(p == data.end() || p->first > offset)) {
--p; // might overlap!