Thread (50 messages) 50 messages, 6 authors, 2017-03-28

Re: [PATCH 06/16] mmc: core: replace waitqueue with worker

From: Jens Axboe <axboe@kernel.dk>
Date: 2017-03-13 14:19:50
Also in: linux-mmc

On 03/13/2017 03:25 AM, Adrian Hunter wrote:
On 11/03/17 00:05, Jens Axboe wrote:
quoted
On 03/10/2017 07:21 AM, Adrian Hunter wrote:
quoted
quoted
Essentially I take out that thread and replace it with this one worker
introduced in this very patch. I agree the driver can block in many ways
and that is why I need to have it running in process context, and this
is what the worker introduced here provides.
The last time I looked at the blk-mq I/O scheduler code, it pulled up to
qdepth requests from the I/O scheduler and left them on a local list while
running ->queue_rq().  That means blocking in ->queue_rq() leaves some
number of requests in limbo (not issued but also not in the I/O scheduler)
for that time.
Look again, if we're not handling the requeued dispatches, we pull one
at the time from the scheduler.
That's good :-)

Now the next thing ;-)

It looks like we either set BLK_MQ_F_BLOCKING and miss the possibility of
issuing synchronous requests immediately, or we don't set BLK_MQ_F_BLOCKING
in which case we are never allowed to sleep in ->queue_rq().  Is that true?
Only one of those statements is true - if you don't set BLK_MQ_F_BLOCKING,
then you may never block in your ->queue_rq() function. But if you do set it,
it does not preclude immediate issue of sync requests.

-- 
Jens Axboe
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help