On 2/24/20 6:04 PM, Ming Lei wrote: > For some reason, device may be in one situation which can't handle > FS request, so STS_RESOURCE is always returned and the FS request > will be added to hctx->dispatch. However passthrough request may > be required at that time for fixing the problem. If passthrough > request is added to scheduler queue, there isn't any chance for > blk-mq to dispatch it given we prioritize requests in hctx->dispatch. > Then the FS IO request may never be completed, and IO hang is caused. > > So passthrough request has to be added to hctx->dispatch directly > for fixing the IO hang. > > Fix this issue by inserting passthrough request into hctx->dispatch > directly together withing adding FS request to the tail of > hctx->dispatch in blk_mq_dispatch_rq_list(). Actually we add FS request > to tail of hctx->dispatch at default, see blk_mq_request_bypass_insert(). > > Then it becomes consistent with original legacy IO request > path, in which passthrough request is always added to q->queue_head. Applied, thanks Ming. -- Jens Axboe