C_GatherBuilder gather(cct);
set<Object*> waitfor_commit;
- set<BufferHead*>::iterator next, it;
+ set<BufferHead*, BufferHead::ptr_lt>::iterator next, it;
next = it = dirty_or_tx_bh.begin();
while (it != dirty_or_tx_bh.end()) {
++next;
return (get_journal_tid() == 0 || bh->get_journal_tid() == 0 ||
get_journal_tid() == bh->get_journal_tid());
}
+
+ struct ptr_lt {
+ bool operator()(const BufferHead* l, const BufferHead* r) const {
+ const Object *lob = l->ob;
+ const Object *rob = r->ob;
+ const ObjectSet *loset = lob->oset;
+ const ObjectSet *roset = rob->oset;
+ if (loset != roset)
+ return loset < roset;
+ if (lob != rob)
+ return lob < rob;
+ if (l->start() != r->start())
+ return l->start() < r->start();
+ return l < r;
+ }
+ };
};
// ******* Object *********
ceph_tid_t last_read_tid;
- set<BufferHead*> dirty_or_tx_bh;
+ set<BufferHead*, BufferHead::ptr_lt> dirty_or_tx_bh;
LRU bh_lru_dirty, bh_lru_rest;
LRU ob_lru;