void PG::append_log(
vector<pg_log_entry_t>& logv, eversion_t trim_to, ObjectStore::Transaction &t,
- bool do_update_snap_map)
+ bool transaction_applied)
{
- if (do_update_snap_map)
+ if (transaction_applied)
update_snap_map(logv, t);
dout(10) << "append_log " << pg_log.get_log() << " " << logv << dendl;
p->offset = 0;
add_log_entry(*p, keys[p->get_key_name()]);
}
+ if (!transaction_applied)
+ pg_log.clear_can_rollback_to();
dout(10) << "append_log adding " << keys.size() << " keys" << dendl;
t.omap_setkeys(coll_t::META_COLL, log_oid, keys);
void add_log_entry(pg_log_entry_t& e, bufferlist& log_bl);
void append_log(
vector<pg_log_entry_t>& logv, eversion_t trim_to, ObjectStore::Transaction &t,
- bool update_snap_map = true);
+ bool transaction_applied = true);
bool check_log_for_corruption(ObjectStore *store);
void trim_peers();
virtual void log_operation(
vector<pg_log_entry_t> &logv,
const eversion_t &trim_to,
- bool update_snaps,
+ bool transaction_applied,
ObjectStore::Transaction *t) = 0;
virtual void update_peer_last_complete_ondisk(
eversion_t trim_to,
pg_info_t &info);
+ void clear_can_rollback_to() {
+ log.can_rollback_to = log.head;
+ }
+
//////////////////// get or set log & missing ////////////////////
void claim_log(const pg_log_t &o) {
void log_operation(
vector<pg_log_entry_t> &logv,
const eversion_t &trim_to,
- bool update_snaps,
+ bool transaction_applied,
ObjectStore::Transaction *t) {
- append_log(logv, trim_to, *t, update_snaps);
+ append_log(logv, trim_to, *t, transaction_applied);
}
void op_applied(