static const uint8_t flag_delayed = 1 << 2;
static const uint8_t flag_started = 1 << 3;
static const uint8_t flag_sub_op_sent = 1 << 4;
+ static const uint8_t flag_commit_sent = 1 << 5;
OpRequest(Message *req, OpTracker *tracker) :
request(req), xitem(this),
bool been_delayed() { return hit_flag_points & flag_delayed; }
bool been_started() { return hit_flag_points & flag_started; }
bool been_sub_op_sent() { return hit_flag_points & flag_sub_op_sent; }
+ bool been_commit_sent() { return hit_flag_points & flag_commit_sent; }
bool currently_queued_for_pg() { return latest_flag_point & flag_queued_for_pg; }
bool currently_reached_pg() { return latest_flag_point & flag_reached_pg; }
bool currently_delayed() { return latest_flag_point & flag_delayed; }
bool currently_started() { return latest_flag_point & flag_started; }
bool currently_sub_op_sent() { return latest_flag_point & flag_sub_op_sent; }
+ bool currently_commit_sent() { return latest_flag_point & flag_commit_sent; }
const char *state_string() const {
switch(latest_flag_point) {
case flag_delayed: return "delayed";
case flag_started: return "started";
case flag_sub_op_sent: return "waiting for sub ops";
+ case flag_commit_sent: return "commit sent; apply or cleanup";
default: break;
}
return "no flag points reached";
hit_flag_points |= flag_sub_op_sent;
latest_flag_point = flag_sub_op_sent;
}
+ void mark_commit_sent() {
+ mark_event("commit_sent");
+ hit_flag_points |= flag_commit_sent;
+ latest_flag_point = flag_commit_sent;
+ }
void mark_event(const string &event);
osd_reqid_t get_reqid() const {