spg_t pgid;
shard_id_t from;
ceph_tid_t rep_tid;
- list<pg_log_entry_t> entries;
+ mempool::osd::list<pg_log_entry_t> entries;
epoch_t get_epoch() const { return map_epoch; }
spg_t get_pgid() const { return pgid; }
MOSDPGUpdateLogMissing() :
Message(MSG_OSD_PG_UPDATE_LOG_MISSING, HEAD_VERSION, COMPAT_VERSION) { }
MOSDPGUpdateLogMissing(
- const list<pg_log_entry_t> &entries,
+ const mempool::osd::list<pg_log_entry_t> &entries,
spg_t pgid,
shard_id_t from,
epoch_t epoch,
const string epoch_key("_epoch");
const string fastinfo_key("_fastinfo");
-
template <class T>
static ostream& _prefix(std::ostream *_dout, T *t)
{
}
bool PG::append_log_entries_update_missing(
- const list<pg_log_entry_t> &entries,
+ const mempool::osd::list<pg_log_entry_t> &entries,
ObjectStore::Transaction &t)
{
assert(!entries.empty());
void PG::merge_new_log_entries(
- const list<pg_log_entry_t> &entries,
+ const mempool::osd::list<pg_log_entry_t> &entries,
ObjectStore::Transaction &t)
{
dout(10) << __func__ << " " << entries << dendl;
#include <boost/statechart/event_base.hpp>
#include <boost/scoped_ptr.hpp>
#include "include/memory.h"
+#include "include/mempool.h"
// re-include our assert to clobber boost's
#include "include/assert.h"
};
struct PGLogEntryHandler : public PGLog::LogEntryHandler {
- list<pg_log_entry_t> to_rollback;
+ mempool::osd::list<pg_log_entry_t> to_rollback;
set<hobject_t, hobject_t::BitwiseComparator> to_remove;
- list<pg_log_entry_t> to_trim;
+ mempool::osd::list<pg_log_entry_t> to_trim;
list<pair<hobject_t, version_t> > to_stash;
// LogEntryHandler
bool append_log_entries_update_missing(
- const list<pg_log_entry_t> &entries,
+ const mempool::osd::list<pg_log_entry_t> &entries,
ObjectStore::Transaction &t);
/**
* actingbackfill logs and missings (also missing_loc)
*/
void merge_new_log_entries(
- const list<pg_log_entry_t> &entries,
+ const mempool::osd::list<pg_log_entry_t> &entries,
ObjectStore::Transaction &t);
void reset_interval_flush();
unsigned split_bits,
PGLog::IndexedLog *olog)
{
- list<pg_log_entry_t> oldlog;
+ mempool::osd::list<pg_log_entry_t> oldlog;
oldlog.swap(log);
eversion_t old_tail;
log.tail :
first_non_divergent->version;
- list<pg_log_entry_t> divergent;
+ mempool::osd::list<pg_log_entry_t> divergent;
list<pg_log_entry_t>::const_iterator pp = olog.log.end();
while (true) {
if (pp == olog.log.begin())
assert(newhead >= log.tail);
list<pg_log_entry_t>::iterator p = log.log.end();
- list<pg_log_entry_t> divergent;
+ mempool::osd::list<pg_log_entry_t> divergent;
while (true) {
if (p == log.log.begin()) {
// yikes, the whole thing is divergent!
mark_dirty_from(lower_bound);
// move aside divergent items
- list<pg_log_entry_t> divergent;
+ mempool::osd::list<pg_log_entry_t> divergent;
while (!log.empty()) {
pg_log_entry_t &oe = *log.log.rbegin();
/*
log.log.pop_back();
}
- list<pg_log_entry_t> entries;
+ mempool::osd::list<pg_log_entry_t> entries;
entries.splice(entries.end(), olog.log, from, to);
append_log_entries_update_missing(
info.last_backfill,
#define CEPH_PG_LOG_H
// re-include our assert to clobber boost's
-#include "include/assert.h"
+#include "include/assert.h"
#include "osd_types.h"
#include "os/ObjectStore.h"
#include <list>
protected:
static void split_by_object(
- list<pg_log_entry_t> &entries,
- map<hobject_t, list<pg_log_entry_t>, hobject_t::BitwiseComparator> *out_entries) {
+ mempool::osd::list<pg_log_entry_t> &entries,
+ map<hobject_t, mempool::osd::list<pg_log_entry_t>, hobject_t::BitwiseComparator> *out_entries) {
while (!entries.empty()) {
- list<pg_log_entry_t> &out_list = (*out_entries)[entries.front().soid];
+ mempool::osd::list<pg_log_entry_t> &out_list = (*out_entries)[entries.front().soid];
out_list.splice(out_list.end(), entries, entries.begin());
}
}
static void _merge_object_divergent_entries(
const IndexedLog &log, ///< [in] log to merge against
const hobject_t &hoid, ///< [in] object we are merging
- const list<pg_log_entry_t> &entries, ///< [in] entries for hoid to merge
+ const mempool::osd::list<pg_log_entry_t> &entries, ///< [in] entries for hoid to merge
const pg_info_t &info, ///< [in] info for merging entries
eversion_t olog_can_rollback_to, ///< [in] rollback boundary
missing_type &missing, ///< [in,out] missing to adjust, use
template <typename missing_type>
static void _merge_divergent_entries(
const IndexedLog &log, ///< [in] log to merge against
- list<pg_log_entry_t> &entries, ///< [in] entries to merge
+ mempool::osd::list<pg_log_entry_t> &entries, ///< [in] entries to merge
const pg_info_t &oinfo, ///< [in] info for merging entries
eversion_t olog_can_rollback_to, ///< [in] rollback boundary
missing_type &omissing, ///< [in,out] missing to adjust, use
LogEntryHandler *rollbacker, ///< [in] optional rollbacker object
const DoutPrefixProvider *dpp ///< [in] logging provider
) {
- map<hobject_t, list<pg_log_entry_t>, hobject_t::BitwiseComparator > split;
+ map<hobject_t, mempool::osd::list<pg_log_entry_t>, hobject_t::BitwiseComparator > split;
split_by_object(entries, &split);
- for (map<hobject_t, list<pg_log_entry_t>, hobject_t::BitwiseComparator>::iterator i = split.begin();
+ for (map<hobject_t, mempool::osd::list<pg_log_entry_t>, hobject_t::BitwiseComparator>::iterator i = split.begin();
i != split.end();
++i) {
_merge_object_divergent_entries(
const pg_log_entry_t& oe,
const pg_info_t& info,
LogEntryHandler *rollbacker) {
- list<pg_log_entry_t> entries;
+ mempool::osd::list<pg_log_entry_t> entries;
entries.push_back(oe);
_merge_object_divergent_entries(
log,
static bool append_log_entries_update_missing(
const hobject_t &last_backfill,
bool last_backfill_bitwise,
- const list<pg_log_entry_t> &entries,
+ const mempool::osd::list<pg_log_entry_t> &entries,
IndexedLog *log,
missing_type &missing,
LogEntryHandler *rollbacker,
bool append_new_log_entries(
const hobject_t &last_backfill,
bool last_backfill_bitwise,
- const list<pg_log_entry_t> &entries,
+ const mempool::osd::list<pg_log_entry_t> &entries,
LogEntryHandler *rollbacker) {
bool invalidate_stats = append_log_entries_update_missing(
last_backfill,
assert(op->may_write());
const osd_reqid_t &reqid = static_cast<MOSDOp*>(op->get_req())->get_reqid();
ObjectContextRef obc;
- list<pg_log_entry_t> entries;
+ mempool::osd::list<pg_log_entry_t> entries;
entries.push_back(pg_log_entry_t(pg_log_entry_t::ERROR, soid,
get_next_version(), eversion_t(), 0,
reqid, utime_t(), r));
void ReplicatedPG::submit_log_entries(
- const list<pg_log_entry_t> &entries,
+ const mempool::osd::list<pg_log_entry_t> &entries,
ObcLockManager &&manager,
boost::optional<std::function<void(void)> > &&on_complete,
OpRequestRef op)
pg_log.get_log().print(*_dout);
*_dout << dendl;
- list<pg_log_entry_t> log_entries;
+ mempool::osd::list<pg_log_entry_t> log_entries;
utime_t mtime = ceph_clock_now(cct);
map<hobject_t, pg_missing_item, hobject_t::ComparatorWithDefault>::const_iterator m =
* Also used to store error log entries for dup detection.
*/
void submit_log_entries(
- const list<pg_log_entry_t> &entries,
+ const mempool::osd::list<pg_log_entry_t> &entries,
ObcLockManager &&manager,
boost::optional<std::function<void(void)> > &&on_complete,
OpRequestRef op = OpRequestRef());
#include <boost/variant.hpp>
#include "include/rados/rados_types.hpp"
+#include "include/mempool.h"
#include "msg/msg_types.h"
#include "include/types.h"
// data can be found
eversion_t rollback_info_trimmed_to;
- list<pg_log_entry_t> log; // the actual log.
+ mempool::osd::list<pg_log_entry_t> log; // the actual log.
pg_log_t() {}