Re: [PATCH V2 0/7] blk-mq: don't allocate driver tag beforehand for flush rq
On Sat, Sep 16, 2017 at 11:03:44AM +0800, Ming Lei wrote: > Hi, > > This patchset avoids to allocate driver tag beforehand for flush rq > in case of I/O scheduler, then flush rq isn't treated specially > wrt. get/put driver tag, code gets cleanup much, such as, > reorder_tags_to_front() is removed, and we needn't to worry > about request order in dispatch list for avoiding I/O deadlock. > > 'dbench -t 30 -s -F 64' has been run on different devices(shared tag, > multi-queue, singele queue, ...), and no issues are observed, > even very low queue depth(1) test are run, debench still works > well. > > Any comments are welcome! > > V2: > - release driver tag before requeue > - warning on inserting a req with driver tag Hi Jens, Did V2 pass your test? If yes and you are fine with this patchset, could you move on and make it land in your for-next? -- Ming
[PATCH V2 0/7] blk-mq: don't allocate driver tag beforehand for flush rq
Hi, This patchset avoids to allocate driver tag beforehand for flush rq in case of I/O scheduler, then flush rq isn't treated specially wrt. get/put driver tag, code gets cleanup much, such as, reorder_tags_to_front() is removed, and we needn't to worry about request order in dispatch list for avoiding I/O deadlock. 'dbench -t 30 -s -F 64' has been run on different devices(shared tag, multi-queue, singele queue, ...), and no issues are observed, even very low queue depth(1) test are run, debench still works well. Any comments are welcome! V2: - release driver tag before requeue - warning on inserting a req with driver tag Ming Lei (7): blk-flush: don't run queue for requests of bypassing flush block: pass 'run_queue' to blk_mq_request_bypass_insert blk-flush: use blk_mq_request_bypass_insert() blk-mq: decide how to handle flush rq via RQF_FLUSH_SEQ blk-mq: move blk_mq_put_driver_tag*() into blk-mq.h blk-mq: don't allocate driver tag beforehand for flush rq blk-mq-sched: warning on inserting a req with driver tag allocated block/blk-core.c | 2 +- block/blk-flush.c| 43 +++- block/blk-mq-sched.c | 65 - block/blk-mq.c | 81 +--- block/blk-mq.h | 35 ++- 5 files changed, 102 insertions(+), 124 deletions(-) -- 2.9.5
[PATCH V2 0/7] blk-mq: don't allocate driver tag beforehand for flush rq
Hi, This patchset avoids to allocate driver tag beforehand for flush rq in case of I/O scheduler, then flush rq isn't treated specially wrt. get/put driver tag, code gets cleanup much, such as, reorder_tags_to_front() is removed, and we needn't to worry about request order in dispatch list for avoiding I/O deadlock. 'dbench -t 30 -s -F 64' has been run on different devices(shared tag, multi-queue, singele queue, ...), and no issues are observed, even very low queue depth(1) test are run, debench still works well. Any comments are welcome! V2: - release driver tag before requeue - warning on inserting a req with driver tag Ming Lei (7): blk-flush: don't run queue for requests of bypassing flush block: pass 'run_queue' to blk_mq_request_bypass_insert blk-flush: use blk_mq_request_bypass_insert() blk-mq: decide how to handle flush rq via RQF_FLUSH_SEQ blk-mq: move blk_mq_put_driver_tag*() into blk-mq.h blk-mq: don't allocate driver tag beforehand for flush rq blk-mq-sched: warning on inserting a req with driver tag allocated block/blk-core.c | 2 +- block/blk-flush.c| 43 +++- block/blk-mq-sched.c | 65 - block/blk-mq.c | 81 +--- block/blk-mq.h | 35 ++- 5 files changed, 102 insertions(+), 124 deletions(-) -- 2.9.5