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