Re: [PATCH V2 0/7] blk-mq: don't allocate driver tag beforehand for flush rq

2017-09-21 Thread Ming Lei
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

2017-09-15 Thread Ming Lei
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

2017-09-15 Thread Ming Lei
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