On 2020-05-08 21:10, Ming Lei wrote: > queue freezing can only be applied on the request queue level, and not > hctx level. When requests can't be completed, wait freezing just hangs > for-ever. That's indeed what I meant: freeze the entire queue instead of introducing a new mechanism that freezes only one hardware queue at a time. Please clarify what "when requests can't be completed" means. Are you referring to requests that take longer than expected due to e.g. a controller lockup or to requests that take a long time intentionally? The former case is handled by the block layer timeout handler. I propose to handle the latter case by introducing a new callback function pointer in struct blk_mq_ops that aborts all outstanding requests. Request queue freezing is such an important block layer mechanism that I think we should require that all block drivers support freezing a request queue in a short time. Bart.