我们在backport async buffered reads特性时,并没有将task_work_add的调用全部转为io_req_task_work_add, 导致async buffered reads唤醒时仍然使用的是TWA_RESUME,导致处于 interruptible 状态的等待者不能及时被唤醒,从而导致应用hang。
*** Bug 98 has been marked as a duplicate of this bug. ***
*** Bug 99 has been marked as a duplicate of this bug. ***
*** Bug 100 has been marked as a duplicate of this bug. ***
*** Bug 101 has been marked as a duplicate of this bug. ***
(In reply to josephqi from comment #0) > 我们在backport async buffered > reads特性时,并没有将task_work_add的调用全部转为io_req_task_work_add, 导致async buffered > reads唤醒时仍然使用的是TWA_RESUME,导致处于 interruptible 状态的等待者不能及时被唤醒,从而导致应用hang。 准确来说应该是RESUME会唤醒 interruptible的线程,但是对于正运行在用户态的线程没有效果。因而可能出现后者如果不再次进入内核态,task work就不会被处理的情况。
https://gitee.com/anolis/cloud-kernel/pulls/51