Jan Kara
1b2ff19e6a
blk-flush: Queue through IO scheduler when flush not required
...
Currently blk_insert_flush() just adds flush request to q->queue_head
when flush is not required. That completely bypasses IO scheduler so
e.g. CFQ can be idling waiting for new request to arrive and will idle
through the whole window unnecessarily. Luckily this only happens in
rare cases as usually checks in generic_make_request_checks() clear
FLUSH and FUA flags early if they are not needed.
When no flushing is actually required, we can easily fix the problem by
properly queueing the request through the IO scheduler. Ideally IO
scheduler should be also made aware of requests queued via
blk_flush_queue_rq(). However inserting flush request through IO
scheduler can have unwanted side-effects since due to flush batching
delaying the flush request in IO scheduler will delay all flush requests
possibly coming from other processes. So we keep adding the request
directly to q->queue_head.
Signed-off-by: Jan Kara <jack@suse.com>
Reviewed-by: Jeff Moyer <jmoyer@redhat.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
2015-11-16 15:23:51 -07:00
..
partitions
Merge branch 'for-3.20/core' of git://git.kernel.dk/linux-block
2015-02-12 14:13:23 -08:00
bio-integrity.c
block: blk_flush_integrity() for bio-based drivers
2015-10-21 14:43:44 -06:00
bio.c
mm, page_alloc: distinguish between being unable to sleep, unwilling to sleep and avoiding waking kswapd
2015-11-06 17:50:42 -08:00
blk-cgroup.c
Merge branch 'for-4.4' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup
2015-11-05 14:51:32 -08:00
blk-core.c
block: fix blk-core.c kernel-doc warning
2015-11-11 09:36:57 -07:00
blk-exec.c
block: move PM request support to IDE
2015-05-05 13:40:42 -06:00
blk-flush.c
blk-flush: Queue through IO scheduler when flush not required
2015-11-16 15:23:51 -07:00
blk-integrity.c
block, libnvdimm, nvme: provide a built-in blk_integrity nop profile
2015-10-21 14:43:45 -06:00
blk-ioc.c
mm, page_alloc: distinguish between being unable to sleep, unwilling to sleep and avoiding waking kswapd
2015-11-06 17:50:42 -08:00
blk-iopoll.c
blk-lib.c
block: re-add discard_granularity and alignment checks
2015-10-28 09:12:58 +09:00
blk-map.c
block: Copy a user iovec if it includes gaps
2015-09-11 09:03:50 -06:00
blk-merge.c
block: avoid to merge splitted bio
2015-10-21 15:00:51 -06:00
blk-mq-cpu.c
blk-mq-cpumap.c
blk-mq: avoid inserting requests before establishing new mapping
2015-09-29 11:32:50 -06:00
blk-mq-sysfs.c
block: add block polling support
2015-11-07 10:40:47 -07:00
blk-mq-tag.c
mm, page_alloc: distinguish between being unable to sleep, unwilling to sleep and avoiding waking kswapd
2015-11-06 17:50:42 -08:00
blk-mq-tag.h
blk-mq: factor out a helper to iterate all tags for a request_queue
2015-10-01 10:10:57 +02:00
blk-mq.c
blk-mq: mark __blk_mq_complete_request() static
2015-11-11 09:36:56 -07:00
blk-mq.h
blk-mq: mark __blk_mq_complete_request() static
2015-11-11 09:36:56 -07:00
blk-settings.c
Merge branch 'for-4.3/core' of git://git.kernel.dk/linux-block
2015-09-02 13:10:25 -07:00
blk-softirq.c
blk-sysfs.c
block: add block polling support
2015-11-07 10:40:47 -07:00
blk-tag.c
block: support different tag allocation policy
2015-01-23 14:15:46 -07:00
blk-throttle.c
cgroup: replace cgroup_on_dfl() tests in controllers with cgroup_subsys_on_dfl()
2015-09-18 11:56:28 -04:00
blk-timeout.c
blk.h
Merge branch 'for-4.4/integrity' of git://git.kernel.dk/linux-block
2015-11-04 20:51:48 -08:00
bounce.c
Merge branch 'for-linus' of git://git.kernel.dk/linux-block
2015-09-19 18:57:09 -07:00
bsg-lib.c
bsg.c
block: Simplify bsg complete all
2015-02-04 09:57:52 -07:00
cfq-iosched.c
cgroup: replace cgroup_on_dfl() tests in controllers with cgroup_subsys_on_dfl()
2015-09-18 11:56:28 -04:00
cmdline-parser.c
compat_ioctl.c
deadline-iosched.c
elevator.c
block: check bio_mergeable() early before merging
2015-10-21 15:00:54 -06:00
genhd.c
block: Inline blk_integrity in struct gendisk
2015-10-21 14:42:42 -06:00
ioctl.c
block: add an API for Persistent Reservations
2015-10-21 14:46:56 -06:00
ioprio.c
pidns: fix set/getpriority and ioprio_set/get in PRIO_USER mode
2015-11-06 17:50:42 -08:00
Kconfig
Kconfig.iosched
Makefile
noop-iosched.c
elevator: use list_{first,prev,next}_entry
2015-11-16 15:21:48 -07:00
partition-generic.c
block: Inline blk_integrity in struct gendisk
2015-10-21 14:42:42 -06:00
scsi_ioctl.c
mm, page_alloc: rename __GFP_WAIT to __GFP_RECLAIM
2015-11-06 17:50:42 -08:00
t10-pi.c
block: Consolidate static integrity profile properties
2015-10-21 14:42:38 -06:00