On 11/27/24 4:19 PM, Christoph Hellwig wrote: > On Wed, Nov 27, 2024 at 04:02:42PM +0900, Damien Le Moal wrote: >> Got something simple and working. >> Will run it through our test suite to make sure it does not regress anything. >> >> The change is: > > This looks reasonable. Do we also need to do something about > zone reset/finish command with the NOWAIT flag set? Right now no > caller set NOWAIT, but maybe we should warn about that and clear > the flag? Good point. I will add that as well. After all these fixes, the last remaining problem is the zone write plug error recovery issuing a report zone which can block if a queue freeze was initiated. That can prevent forward progress and hang the freeze caller. I do not see any way to avoid that report zones. I think this could be fixed with a magic BLK_MQ_REQ_INTERNAL flag passed to blk_mq_alloc_request() and propagated to blk_queue_enter() to forcefully take a queue usage counter reference even if a queue freeze was started. That would ensure forward progress (i.e. scsi_execute_cmd() or the NVMe equivalent would not block forever). Need to think more about that. -- Damien Le Moal Western Digital Research