Re: [PATCH V13 0/3] blk-mq: refactor code of issue directly

From: jianchao.wang
Date: Mon Dec 10 2018 - 20:41:37 EST


Ping ?

Thanks
Jianchao

On 12/10/18 11:01 AM, Jianchao Wang wrote:
> Hi Jens
>
> Please consider this patchset for 4.21.
>
> It refactors the code of issue request directly to unify the interface
> and make the code clearer and more readable.
>
> The 1st patch refactors the code of issue request directly to unify the
> helper interface which could handle all the cases.
>
> The 2nd patch make blk_mq_sched_insert_requests issue requests directly
> with 'bypass' false, then it needn't to handle the non-issued requests
> any more.
>
> The 3rd patch replace and kill the blk_mq_request_issue_directly.
>
> V13:
> - remove the unused tag 'out' (1/3)
>
> V12:
> - remove the original 1st patch/
> - rebase other 3 patches on newest for-4.21/block
> - add some comment
>
> V11:
> - insert request to dispatch list when .queue_rq return
> BLK_STS_RESOURCE/BLK_STS_DEV_RESOURCE. (2/4)
> - stop to attempt direct-issue and insert the reset when meet
> non-ok case (3/4).
>
> V10:
> - address Jen's comment.
> - let blk_mq_try_issue_directly return actual result for case
> 'bypass == false'. (2/4)
> - use return value of blk_mq_try_issue_directly to identify
> whether the request is direct-issued successfully. (3/4)
>
> V9:
> - rebase on recent for-4.21/block
> - add 1st patch
>
> V8:
> - drop the original 2nd patch which try to insert requests into hctx->dispatch
> if quiesced or stopped.
> - remove two wrong 'unlikely'
>
> V7:
> - drop the original 3rd patch which try to ensure hctx to be ran on
> its mapped cpu in issueing directly path.
>
> V6:
> - drop original 1st patch to address Jen's comment
> - discard the enum mq_issue_decision and blk_mq_make_decision and use
> BLK_STS_* return values directly to address Jen's comment. (1/5)
> - add 'unlikely' in blk_mq_try_issue_directly (1/5)
> - refactor the 2nd and 3rd patch based on the new 1st patch.
> - reserve the unused_cookie in 4th and 5th patch
>
> V5:
> - rebase against Jens' for-4.21/block branch
> - adjust the order of patch04 and patch05
> - add patch06 to replace and kill the one line blk_mq_request_bypass_insert
> - comment changes
>
> V4:
> - split the original patch 1 into two patches, 1st and 2nd patch currently
> - rename the mq_decision to mq_issue_decision
> - comment changes
>
> V3:
> - Correct the code about the case bypass_insert is true and io scheduler
> attached. The request still need to be issued in case above. (1/4)
> - Refactor the code to make code clearer. blk_mq_make_request is introduced
> to decide insert, end or just return based on the return value of .queue_rq
> and bypass_insert (1/4)
> - Add the 2nd patch. It introduce a new decision result which indicates to
> insert request with blk_mq_request_bypass_insert.
> - Modify the code to adapt the new patch 1.
>
> V2:
> - Add 1st and 2nd patch to refactor the code.
>
>
> Jianchao Wang (3)
> blk-mq: refactor the code of issue request directly
> blk-mq: issue directly with bypass 'false' in
> blk-mq: replace and kill blk_mq_request_issue_directly
>
> block/blk-core.c | 4 +-
> block/blk-mq-sched.c | 8 ++--
> block/blk-mq.c | 123 +++++++++++++++++++++++++--------------------------
> block/blk-mq.h | 6 ++-
> 4 files changed, 70 insertions(+), 71 deletions(-)
>
> Thanks
> Jianchao
>
>