Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1736566

Re: [PATCH V8 12/14] mmc: block: Add CQE and blk-mq support

From Adrian Hunter <adrian.hunter@intel.com>
Newsgroups linux.kernel
Subject Re: [PATCH V8 12/14] mmc: block: Add CQE and blk-mq support
Date 2017-09-21 13:30 +0200
Message-ID <us7Q6-kv-19@gated-at.bofh.it> (permalink)
References <upel4-6QI-7@gated-at.bofh.it> <upel6-6QI-53@gated-at.bofh.it> <us6r1-7Dh-21@gated-at.bofh.it>
Organization Intel Finland Oy, Registered Address: PL 281, 00181 Helsinki, Business Identity Code: 0357606 - 4, Domiciled in Helsinki

Show all headers | View raw


On 21/09/17 12:59, Ulf Hansson wrote:
> On 13 September 2017 at 13:40, Adrian Hunter <adrian.hunter@intel.com> wrote:
>> Add CQE support to the block driver, including:
>>     - optionally using DCMD for flush requests
>>     - "manually" issuing discard requests
>>     - issuing read / write requests to the CQE
>>     - supporting block-layer timeouts
>>     - handling recovery
>>     - supporting re-tuning
>>
>> CQE offers 25% - 50% better random multi-threaded I/O.  There is a slight
>> (e.g. 2%) drop in sequential read speed but no observable change to sequential
>> write.
>>
>> CQE automatically sends the commands to complete requests.  However it only
>> supports reads / writes and so-called "direct commands" (DCMD).  Furthermore
>> DCMD is limited to one command at a time, but discards require 3 commands.
>> That makes issuing discards through CQE very awkward, but some CQE's don't
>> support DCMD anyway.  So for discards, the existing non-CQE approach is
>> taken, where the mmc core code issues the 3 commands one at a time i.e.
>> mmc_erase(). Where DCMD is used, is for issuing flushes.
>>
>> For host controllers without CQE support, blk-mq support is extended to
>> synchronous reads/writes or, if the host supports CAP_WAIT_WHILE_BUSY,
>> asynchonous reads/writes.  The advantage of asynchronous reads/writes is
>> that it allows the preparation of the next request while the current
>> request is in progress.
>>
>> Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
>> ---
>>  drivers/mmc/core/block.c | 734 ++++++++++++++++++++++++++++++++++++++++++++++-
>>  drivers/mmc/core/block.h |   8 +
>>  drivers/mmc/core/queue.c | 428 +++++++++++++++++++++++++--
>>  drivers/mmc/core/queue.h |  54 +++-
>>  4 files changed, 1192 insertions(+), 32 deletions(-)
> 
> Adrian, this is just too hard for me to review. Please, can you split this up?
> 
> At least enabling mq support should be done in a separate and first
> step, then you could add the CQE bits on top.
> 
> I think that is important, because we want to make sure the mq
> deployment is done correctly first. Otherwise it becomes impossible to
> narrow down problems, because those could then be either CQE related
> or mq related.

I looked at splitting it up, but it makes more sense together.  Things are
the way they are to support all the different issue types.  It reads much
better together.  The CQE functions are named appropriately and practically
all the code is new, so it is not as though there are any intermediate steps.

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH V8 00/14] mmc: Add Command Queue support Adrian Hunter <adrian.hunter@intel.com> - 2017-09-13 13:50 +0200
  [PATCH V8 11/14] mmc: core: Export mmc_start_request() Adrian Hunter <adrian.hunter@intel.com> - 2017-09-13 13:50 +0200
  [PATCH V8 07/14] mmc: block: Factor out mmc_setup_queue() Adrian Hunter <adrian.hunter@intel.com> - 2017-09-13 13:50 +0200
  [PATCH V8 12/14] mmc: block: Add CQE and blk-mq support Adrian Hunter <adrian.hunter@intel.com> - 2017-09-13 13:50 +0200
    Re: [PATCH V8 12/14] mmc: block: Add CQE and blk-mq support Ulf Hansson <ulf.hansson@linaro.org> - 2017-09-21 12:00 +0200
      Re: [PATCH V8 12/14] mmc: block: Add CQE and blk-mq support Adrian Hunter <adrian.hunter@intel.com> - 2017-09-21 13:30 +0200
  [PATCH V8 03/14] mmc: mmc: Enable Command Queuing Adrian Hunter <adrian.hunter@intel.com> - 2017-09-13 14:00 +0200
  Re: [PATCH V8 00/14] mmc: Add Command Queue support Ulf Hansson <ulf.hansson@linaro.org> - 2017-09-21 11:10 +0200
    Re: [PATCH V8 00/14] mmc: Add Command Queue support Adrian Hunter <adrian.hunter@intel.com> - 2017-09-21 12:00 +0200
  Re: [PATCH V8 00/14] mmc: Add Command Queue support Christoph Hellwig <hch@lst.de> - 2017-09-21 16:10 +0200

csiph-web