<< dendl;
} else {
_txc_finalize_kv(txc, txc->t);
- txc->kv_submitted = true;
+ txc->state = TransContext::STATE_KV_SUBMITTED;
int r = db->submit_transaction(txc->t);
assert(r == 0);
}
std::lock_guard<std::mutex> l(kv_lock);
kv_queue.push_back(txc);
kv_cond.notify_one();
- if (!txc->kv_submitted) {
+ if (txc->state != TransContext::STATE_KV_SUBMITTED) {
kv_queue_unsubmitted.push_back(txc);
++txc->osr->kv_committing_serially;
}
}
return;
- case TransContext::STATE_KV_QUEUED:
+ case TransContext::STATE_KV_SUBMITTED:
txc->log_state_latency(logger, l_bluestore_state_kv_committing_lat);
txc->state = TransContext::STATE_KV_DONE;
_txc_finish_kv(txc);
dout(10) << __func__ << " new_blobid_max " << new_blobid_max << dendl;
}
for (auto txc : kv_submitting) {
- assert(!txc->kv_submitted);
+ assert(txc->state == TransContext::STATE_KV_QUEUED);
_txc_finalize_kv(txc, txc->t);
txc->log_state_latency(logger, l_bluestore_state_kv_queued_lat);
int r = db->submit_transaction(txc->t);
assert(r == 0);
--txc->osr->kv_committing_serially;
- txc->kv_submitted = true;
+ txc->state = TransContext::STATE_KV_SUBMITTED;
}
for (auto txc : kv_committing) {
_txc_release_alloc(txc);
<< " in " << dur << dendl;
while (!kv_committing.empty()) {
TransContext *txc = kv_committing.front();
- assert(txc->kv_submitted);
+ assert(txc->state == TransContext::STATE_KV_SUBMITTED);
_txc_state_proc(txc);
kv_committing.pop_front();
}
STATE_PREPARE,
STATE_AIO_WAIT,
STATE_IO_DONE,
- STATE_KV_QUEUED,
+ STATE_KV_QUEUED, // queued for kv_sync_thread submission
+ STATE_KV_SUBMITTED, // submitted to kv; not yet synced
STATE_KV_DONE,
STATE_WAL_QUEUED,
STATE_WAL_APPLYING,
case STATE_AIO_WAIT: return "aio_wait";
case STATE_IO_DONE: return "io_done";
case STATE_KV_QUEUED: return "kv_queued";
+ case STATE_KV_SUBMITTED: return "kv_submitted";
case STATE_KV_DONE: return "kv_done";
case STATE_WAL_QUEUED: return "wal_queued";
case STATE_WAL_APPLYING: return "wal_applying";
boost::intrusive::list_member_hook<> wal_queue_item;
bluestore_wal_transaction_t *wal_txn; ///< wal transaction (if any)
- bool kv_submitted = false; ///< true when we've been submitted to kv db
-
interval_set<uint64_t> allocated, released;
struct volatile_statfs{
enum {