Fix a write hang with throttling due to timer reenterability / triggerability

This commit is contained in:
Vitaliy Filippov
2022-03-28 01:42:06 +03:00
parent 65d08e067e
commit 79ebda933e
+2 -1
View File
@@ -544,12 +544,13 @@ resume_4:
if (ref_us > exec_us + throttle_threshold_us) if (ref_us > exec_us + throttle_threshold_us)
{ {
// Pause reply // Pause reply
PRIV(op)->op_state = 5;
// Remember that the timer can in theory be called right here
tfd->set_timer_us(ref_us-exec_us, false, [this, op](int timer_id) tfd->set_timer_us(ref_us-exec_us, false, [this, op](int timer_id)
{ {
PRIV(op)->op_state++; PRIV(op)->op_state++;
ringloop->wakeup(); ringloop->wakeup();
}); });
PRIV(op)->op_state = 5;
return 1; return 1;
} }
} }