feat(raft-drive-async): LivenessAdmission pool reservation + commit fold (tasks 1.6/1.7)
vtaskmgr gains vtask_class_t (LIVENESS/LIVE_BLOCK/REQ_BLOCK) + a pool-level blocking reservation: REQ_BLOCK fast-rejects -XCE_ERR_NOT_READY past n_vcpus-R; LIVENESS never gated (deadlock-freedom). commit_submit folds its inflight_waits onto the pool via commit_set_pool; production wired in cluster.c phase2 (vtaskmgr_set_liveness_reserved(R) + commit_set_pool). Lock order p->lock->ce->lock->blk_lock. Dormant until 3.1. Commit suites 38/30/22/38 green; lib 282/0, controller 196/0, ASAN clean. Phase 1 done.
This commit is contained in:
parent
0781c6c027
commit
a36234a103
12 changed files with 721 additions and 22 deletions
|
|
@ -1353,6 +1353,15 @@ int cluster_init_phase2(cluster_t* c)
|
|||
"commit/REQ_BLOCK cap=%d)",
|
||||
liveness_reserved, c->ha.n_peers, c->vtaskmgr.n_vcpus,
|
||||
c->vtaskmgr.n_vcpus - liveness_reserved);
|
||||
|
||||
/* raft-drive-async task 1.6: install the pool-level LivenessAdmission
|
||||
* reservation and fold commit-wait admission onto it. The pool now owns
|
||||
* the single reservation; commit_submit(WAIT) acquires a pool blocking
|
||||
* slot (cap = n_vcpus - liveness_reserved) instead of the local
|
||||
* COMMIT_WAIT_RESERVED cap. Dormant beyond the commit cap-value change
|
||||
* until peer_ctrl dispatches classified tasks (task 3.1). */
|
||||
vtaskmgr_set_liveness_reserved(&c->vtaskmgr, liveness_reserved);
|
||||
commit_set_pool(&c->commit, &c->vtaskmgr);
|
||||
if (c->vtaskmgr.n_vcpus < c->ha.n_peers) {
|
||||
/* Under-provisioned: the n_vcpus ceiling clamped the reservation
|
||||
* below the ideal n_peers-1. Still correct (deadlock-free via fast
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue