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 > >