#include "mds_table_types.h"
#include "include/buffer_fwd.h"
+#include "MDSContext.h"
+
class MDSRank;
-class Context;
-class MDSInternalContextBase;
class MDSTable {
public:
MDSRank *mds;
protected:
- const char *table_name;
+ std::string table_name;
bool per_mds;
mds_rank_t rank;
- object_t get_object_name() const;
static const int STATE_UNDEF = 0;
static const int STATE_OPENING = 1;
version_t version, committing_version, committed_version, projected_version;
- map<version_t, list<MDSInternalContextBase*> > waitfor_save;
+ map<version_t, MDSContext::vec > waitfor_save;
public:
- MDSTable(MDSRank *m, const char *n, bool is_per_mds) :
+ MDSTable(MDSRank *m, std::string_view n, bool is_per_mds) :
mds(m), table_name(n), per_mds(is_per_mds), rank(MDS_RANK_NONE),
state(STATE_UNDEF),
version(0), committing_version(0), committed_version(0), projected_version(0) {}
bool is_opening() const { return state == STATE_OPENING; }
void reset();
- void save(MDSInternalContextBase *onfinish=0, version_t need=0);
+ void save(MDSContext *onfinish=0, version_t need=0);
void save_2(int r, version_t v);
void shutdown() {
if (is_active()) save(0);
}
- void load(MDSInternalContextBase *onfinish);
+ object_t get_object_name() const;
+ void load(MDSContext *onfinish);
void load_2(int, bufferlist&, Context *onfinish);
// child must overload these
virtual void reset_state() = 0;
- virtual void decode_state(bufferlist::iterator& p) = 0;
+ virtual void decode_state(bufferlist::const_iterator& p) = 0;
virtual void encode_state(bufferlist& bl) const = 0;
friend class C_IO_MT_Load;