Re: [PATCHSET v5] blk-mq: reimplement timeout handling

From: Jens Axboe
Date: Fri Jan 12 2018 - 16:55:34 EST


On 1/12/18 2:19 PM, Bart Van Assche wrote:
> On Fri, 2018-01-12 at 14:07 -0700, Jens Axboe wrote:
>> You're really not making it easy for folks to run this :-)
>
> My hope is that the ib_srp and ib_srpt patches will be accepted upstream soon.
> As long as these are not upstream, anyone who wants to retrieve these patches
> is welcome to clone https://github.com/bvanassche/linux/tree/block-scsi-for-next,
> a kernel tree with all my pending patches.
>
>> Do you have the matching blk-mq debugfs output for the device?
>
> Sorry but I only retrieved the blk-mq debugfs several minutes after the hang
> started so I'm not sure the state information is relevant. Anyway, I have attached
> it to this e-mail. The most remarkable part is the following:
>
> ./000000009ddfa913/requeue_list:000000009646711c {.op=READ, .state=idle, gen=0x1
> 18, abort_gen=0x0, .cmd_flags=, .rq_flags=SORTED|1|SOFTBARRIER|IO_STAT, complete
> =0, .tag=-1, .internal_tag=217}

Two things come to mind here:

1) We forgot to add RQF_STARTED to the debugfs bits, I just rectified
that.

2) You are using a scheduler (which one?). The request was inserted, and
retrieved by the driver, then requeued. After this requeue,
apparently nothing happened. The queue should have been re-run, but
that didn't happen. What are the queue/hctx states?

--
Jens Axboe