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

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

From: Adrian Hunter <adrian.hunter@intel.com>
Date: 2017-03-14 12:59:49
Also in: linux-mmc

On 13/03/17 16:19, Jens Axboe wrote:
On 03/13/2017 03:25 AM, Adrian Hunter wrote:
quoted
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.
I meant it gets put to the workqueue rather than issued in the context of
the submitter.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help