}
}
+void PG::prepare_write(pg_info_t &info,
+ pg_info_t &last_written_info,
+ PastIntervals &past_intervals,
+ PGLog &pglog,
+ bool dirty_info,
+ bool dirty_big_info,
+ bool need_write_epoch,
+ ceph::os::Transaction &t)
+{
+ std::map<string,bufferlist> km;
+ if (dirty_big_info || dirty_info) {
+ int ret = prepare_info_keymap(
+ shard_services.get_cct(),
+ &km,
+ get_osdmap_epoch(),
+ info,
+ last_written_info,
+ past_intervals,
+ dirty_big_info,
+ need_write_epoch,
+ true,
+ nullptr,
+ this);
+ ceph_assert(ret == 0);
+ }
+ pglog.write_log_and_missing(
+ t, &km, coll, pgmeta_oid,
+ peering_state.get_pool().info.require_rollback());
+ if (!km.empty()) {
+ t.omap_setkeys(coll, pgmeta_oid, km);
+ }
+}
+
void PG::log_state_enter(const char *state) {
logger().info("Entering state: {}", state);
}
bool dirty_info,
bool dirty_big_info,
bool need_write_epoch,
- ceph::os::Transaction &t) final {
- std::map<string,bufferlist> km;
- if (dirty_big_info || dirty_info) {
- int ret = prepare_info_keymap(
- shard_services.get_cct(),
- &km,
- get_osdmap_epoch(),
- info,
- last_written_info,
- past_intervals,
- dirty_big_info,
- need_write_epoch,
- true,
- nullptr,
- this);
- ceph_assert(ret == 0);
- }
- pglog.write_log_and_missing(
- t, &km, coll, pgmeta_oid,
- peering_state.get_pool().info.require_rollback());
- if (!km.empty())
- t.omap_setkeys(coll, pgmeta_oid, km);
- }
+ ceph::os::Transaction &t) final;
void on_info_history_change() final {
// Not needed yet -- mainly for scrub scheduling