On 7/1/25 7:20 AM, Bart Van Assche wrote:
On 6/30/25 5:42 PM, Keith Busch wrote:
On Mon, Jun 30, 2025 at 03:39:18PM -0700, Bart Van Assche wrote:
On 6/27/25 12:17 AM, Christoph Hellwig wrote:
Well, if there are queued never completed bios the freeze will obviously fail. I don't see how this freeze is special vs other freezes or other attributes that freeze.
Hi Christoph,
Do you perhaps want me to remove the freeze/unfreeze calls from all sysfs store callbacks from which it is safe to remove these callbacks?
But don't the remaining attributes that are not safe remain susceptible to this deadlock?
For the remaining sysfs attributes the deadlock can be solved by letting the blk_mq_freeze_queue() call by the sysfs store methods time out if that call takes too long or by making that call interruptible by signals like Ctrl-C. I think its better to let functions like queue_requests_store() fail if an attempt to freeze a request queue takes longer than it should rather than to trigger a kernel deadlock.
I think you're proposing to use blk_mq_freeze_queue_wait_timeout() here (which puts the caller into uninterruptible sleep) and that might be okay. However, IMO, using TASK_INTERRUPTIBLE may not be worth in case those sysfs store methods are invoked from udev rules or application. But lets wait for others to chime in and suggest.
Thanks, --Nilay