Re: [PATCH 1/1] block: Use RCU in blk_mq_[un]quiesce_tagset() instead of set->tag_list_lock
From: Bart Van Assche
Date: Thu Dec 04 2025 - 14:32:07 EST
On 12/4/25 9:15 AM, Mohamed Khalfella wrote:
The stacktraces are from old 6.6.9 kernel.
Please always include stack traces from a recent upstream kernel in
patch descriptions.
However, the issue is still
applicable to recent kernels. This is an example from 6.13 kernel.
Thanks, these stack traces make it clear what is causing the deadlock.
From nvme_timeout():
/*
* Reset immediately if the controller is failed
*/
if (nvme_should_reset(dev, csts)) {
nvme_warn_reset(dev, csts);
nvme_dev_disable(dev, false);
nvme_reset_ctrl(&dev->ctrl);
return BLK_EH_DONE;
}
Is my understanding correct that the above code is involved in the
reported deadlock? If so, has it been considered to run the code inside
the if-statement asynchronously (queue_work()) instead of calling it
synchronously? Would this be sufficient to fix the deadlock?
Thanks,
Bart.