Re: [PATCH] block: Fix bug in runtime-resume handling

Alan Stern
2020-08-24T20:14:16Z

On Mon, Aug 24, 2020 at 10:48:32AM -0700, Bart Van Assche wrote:
> On 2020-08-23 07:57, Alan Stern wrote:
> > The problem is fixed by checking that the queue's runtime-PM status
> > isn't RPM_SUSPENDED before allowing a request to be issued, [ ... ]
>
> Reviewed-by: Bart Van Assche <bvanassche@acm.org>
>
> Can, can you help with testing this patch?
>
> Thanks,
>
> Bart.

Martin:

(I forgot to ask this question several weeks ago, while you were running
your tests. Better ask it now before I forget again...)

I suspect the old runtime-PM code in the block layer would have worked
okay in your SD cardreader test if the BLK_MQ_REQ_PREEMPT flag had not
been set. Do you know why the flag was set, or what line of code caused
it to be set?

As I recall, the request that failed was a read-ahead. It's not clear
to me why such a request would need to have BLK_MQ_REQ_PREEMPT set.
Although there may be other reasons for having that flag, at this point
we're concerned with requests that are part of the runtime-resume
procedure. A read-ahead does not fall into that category.

Do you think you can find the answer? Perhaps we should add a separate
BLK_MQ_REQ_PM flag.

Alan Stern