Ming Lei
235fb892d8
blk-mq: insert flush request to the front of dispatch queue
...
[ Upstream commit cc3200eac4c5eb11c3f34848a014d1f286316310 ]
commit 01e99aeca397 ("blk-mq: insert passthrough request into
hctx->dispatch directly") may change to add flush request to the tail
of dispatch by applying the 'add_head' parameter of
blk_mq_sched_insert_request.
Turns out this way causes performance regression on NCQ controller because
flush is non-NCQ command, which can't be queued when there is any in-flight
NCQ command. When adding flush rq to the front of hctx->dispatch, it is
easier to introduce extra time to flush rq's latency compared with adding
to the tail of dispatch queue because of S_SCHED_RESTART, then chance of
flush merge is increased, and less flush requests may be issued to
controller.
So always insert flush request to the front of dispatch queue just like
before applying commit 01e99aeca397 ("blk-mq: insert passthrough request
into hctx->dispatch directly").
Cc: Damien Le Moal <Damien.LeMoal@wdc.com>
Cc: Shinichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Reported-by: Shinichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Fixes: 01e99aeca397 ("blk-mq: insert passthrough request into hctx->dispatch directly")
Signed-off-by: Ming Lei <ming.lei@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-03-21 08:11:57 +01:00
..
partitions
docs: admin-guide: add a series of orphaned documents
2019-07-15 11:03:02 -03:00
badblocks.c
bfq-cgroup.c
block, bfq: remove ifdefs from around gets/puts of bfq groups
2020-03-12 13:00:32 +01:00
bfq-iosched.c
block, bfq: remove ifdefs from around gets/puts of bfq groups
2020-03-12 13:00:32 +01:00
bfq-iosched.h
block, bfq: remove ifdefs from around gets/puts of bfq groups
2020-03-12 13:00:32 +01:00
bfq-wf2q.c
block, bfq: get a ref to a group when adding it to a service tree
2020-03-12 13:00:32 +01:00
bio-integrity.c
block: fix memleak of bio integrity data
2020-01-26 10:01:09 +01:00
bio.c
block: fix memleak of bio integrity data
2020-01-26 10:01:09 +01:00
blk-cgroup.c
blkcg: make blkcg_print_stat() print stats only for online blkgs
2019-11-06 17:08:38 -07:00
blk-core.c
block: end bio with BLK_STS_AGAIN in case of non-mq devs and REQ_NOWAIT
2020-01-12 12:21:37 +01:00
blk-exec.c
blk-flush.c
blk-mq: insert passthrough request into hctx->dispatch directly
2020-03-21 08:11:52 +01:00
blk-integrity.c
block: centralize PI remapping logic to the block layer
2019-09-17 20:03:49 -06:00
blk-ioc.c
blk-iocost.c
blk-iocost: fix incorrect vtime comparison in iocg_is_idle()
2020-03-18 07:17:52 +01:00
blk-iolatency.c
blkcg: s/RQ_QOS_CGROUP/RQ_QOS_LATENCY/
2019-08-28 21:17:08 -06:00
blk-lib.c
blk-map.c
block: fix memleak when __blk_rq_map_user_iov() is failed
2020-01-12 12:21:43 +01:00
blk-merge.c
block: Improve physical block alignment of split bios
2019-08-04 21:41:29 -06:00
blk-mq-cpumap.c
blk-mq: balance mapping between present CPUs and queues
2019-08-04 21:43:12 -06:00
blk-mq-debugfs-zoned.c
blk-mq-debugfs.c
for-5.3/block-20190708
2019-07-09 10:45:06 -07:00
blk-mq-debugfs.h
blk-mq-pci.c
blk-mq-rdma.c
blk-mq-sched.c
blk-mq: insert flush request to the front of dispatch queue
2020-03-21 08:11:57 +01:00
blk-mq-sched.h
block: blk-mq: Remove blk_mq_sched_started_request and started_request
2019-07-23 07:25:09 -06:00
blk-mq-sysfs.c
blk-mq: make sure that line break can be printed
2019-12-17 19:56:53 +01:00
blk-mq-tag.c
blk-mq: introduce blk_mq_tagset_wait_completed_request()
2019-08-04 21:41:29 -06:00
blk-mq-tag.h
blk-mq-virtio.c
blk-mq.c
blk-mq: insert passthrough request into hctx->dispatch directly
2020-03-21 08:11:52 +01:00
blk-mq.h
blk-mq: insert passthrough request into hctx->dispatch directly
2020-03-21 08:11:52 +01:00
blk-pm.c
block: bypass blk_set_runtime_active for uninitialized q->dev
2019-09-12 07:11:56 -06:00
blk-pm.h
blk-rq-qos.c
blk-wbt: fix performance regression in wbt scale_up/scale_down
2019-10-06 09:26:41 -06:00
blk-rq-qos.h
blk-rq-qos: fix first node deletion of rq_qos_del()
2019-10-15 10:13:13 -06:00
blk-settings.c
block: fix an integer overflow in logical block size
2020-01-23 08:22:32 +01:00
blk-softirq.c
blk-stat.c
blk-stat.h
blk-sysfs.c
rq-qos: get rid of redundant wbt_update_limits()
2019-09-27 01:13:10 -06:00
blk-throttle.c
block: make rq sector size accessible for block stats
2019-09-15 16:02:08 -06:00
blk-timeout.c
blk-wbt.c
blk-wbt: fix performance regression in wbt scale_up/scale_down
2019-10-06 09:26:41 -06:00
blk-wbt.h
block/rq_qos: implement rq_qos_ops->queue_depth_changed()
2019-08-28 21:17:07 -06:00
blk-zoned.c
blk-zoned: implement REQ_OP_ZONE_RESET_ALL
2019-08-04 21:41:29 -06:00
blk.h
block: fix memleak of bio integrity data
2020-01-26 10:01:09 +01:00
bounce.c
bsg-lib.c
block: Fix the type of 'sts' in bsg_queue_rq()
2020-01-23 08:22:44 +01:00
bsg.c
cmdline-parser.c
compat_ioctl.c
compat_ioctl: block: handle BLKGETZONESZ/BLKGETNRZONES
2020-01-09 10:19:58 +01:00
elevator.c
block: Fix elv_support_iosched()
2019-10-14 13:54:09 -06:00
genhd.c
block: Delay default elevator initialization
2019-09-05 19:52:34 -06:00
ioctl.c
ioprio.c
docs: block: convert to ReST
2019-07-15 09:20:27 -03:00
Kconfig
blkcg: implement blk-iocost
2019-08-28 21:17:12 -06:00
Kconfig.iosched
docs: block: convert to ReST
2019-07-15 09:20:27 -03:00
kyber-iosched.c
Makefile
blkcg: implement blk-iocost
2019-08-28 21:17:12 -06:00
mq-deadline.c
block: Introduce elevator features
2019-09-05 19:52:33 -06:00
opal_proto.h
block: sed-opal: Removed duplicate OPAL_METHOD_LENGTH definition
2019-08-20 09:34:49 -06:00
partition-generic.c
scsi_ioctl.c
sed-opal.c
block: sed-opal: fix sparse warning: convert __be64 data
2019-10-03 14:21:32 -06:00
t10-pi.c
block: t10-pi: fix -Wswitch warning
2019-09-23 08:05:19 -06:00