return cmp_nibblewise(l, r) < 0;
}
};
+ struct ComparatorWithDefault {
+ bool bitwise;
+ ComparatorWithDefault(bool b=true) : bitwise(b) {}
+ bool operator()(const hobject_t& l, const hobject_t& r) const {
+ if (bitwise)
+ return cmp_bitwise(l, r) < 0;
+ else
+ return cmp_nibblewise(l, r) < 0;
+ }
+ };
};
WRITE_CLASS_ENCODER(hobject_t)
} else {
randomly_sort_nibblewise = false;
}
+
+ _on_new_interval();
}
void PG::proc_primary_info(ObjectStore::Transaction &t, const pg_info_t &oinfo)
const vector<int>& newacting, int acting_primary,
ObjectStore::Transaction *t);
void on_new_interval();
+ virtual void _on_new_interval() = 0;
void start_flush(ObjectStore::Transaction *t,
list<Context *> *on_applied,
list<Context *> *on_safe);
agent_setup();
}
+void ReplicatedPG::_on_new_interval()
+{
+ // re-sort obc map?
+ if (object_contexts.get_comparator().bitwise != get_sort_bitwise()) {
+ dout(20) << __func__ << " resorting object_contexts" << dendl;
+ object_contexts.reset_comparator(
+ hobject_t::ComparatorWithDefault(get_sort_bitwise()));
+ }
+}
+
void ReplicatedPG::on_change(ObjectStore::Transaction *t)
{
dout(10) << "on_change" << dendl;
}
// projected object info
- SharedLRU<hobject_t, ObjectContext, hobject_t::BitwiseComparator> object_contexts;
+ SharedLRU<hobject_t, ObjectContext, hobject_t::ComparatorWithDefault> object_contexts;
// map from oid.snapdir() to SnapSetContext *
map<hobject_t, SnapSetContext*, hobject_t::BitwiseComparator> snapset_contexts;
Mutex snapset_contexts_lock;
void on_role_change();
void on_pool_change();
+ void _on_new_interval();
void on_change(ObjectStore::Transaction *t);
void on_activate();
void on_flushed();