Paolo Valente
39a7082195
block, bfq: do not plug I/O for bfq_queues with no proc refs
...
[ Upstream commit f718b093277df582fbf8775548a4f163e664d282 ]
Commit 478de3380c ("block, bfq: deschedule empty bfq_queues not
referred by any process") fixed commit 3726112ec7 ("block, bfq:
re-schedule empty queues if they deserve I/O plugging") by
descheduling an empty bfq_queue when it remains with not process
reference. Yet, this still left a case uncovered: an empty bfq_queue
with not process reference that remains in service. This happens for
an in-service sync bfq_queue that is deemed to deserve I/O-dispatch
plugging when it remains empty. Yet no new requests will arrive for
such a bfq_queue if no process sends requests to it any longer. Even
worse, the bfq_queue may happen to be prematurely freed while still in
service (because there may remain no reference to it any longer).
This commit solves this problem by preventing I/O dispatch from being
plugged for the in-service bfq_queue, if the latter has no process
reference (the bfq_queue is then prevented from remaining in service).
Fixes: 3726112ec7 ("block, bfq: re-schedule empty queues if they deserve I/O plugging")
Tested-by: Oleksandr Natalenko <oleksandr@natalenko.name>
Reported-by: Patrick Dung <patdung100@gmail.com>
Tested-by: Patrick Dung <patdung100@gmail.com>
Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-02-24 08:36:31 +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
bfq: Add per-device weight
2019-09-06 14:33:52 -06:00
bfq-iosched.c
block, bfq: do not plug I/O for bfq_queues with no proc refs
2020-02-24 08:36:31 +01:00
bfq-iosched.h
bfq: Add per-device weight
2019-09-06 14:33:52 -06:00
bfq-wf2q.c
bfq: Fix the missing barrier in __bfq_entity_update_weight_prio
2019-09-06 14:33:48 -06: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
block: Fix a lockdep complaint triggered by request queue flushing
2020-01-12 12:21:42 +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
iocost: over-budget forced IOs should schedule async delay
2019-12-31 16:46:19 +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
blk-mq-debugfs.h
blk-mq-pci.c
blk-mq-rdma.c
blk-mq-sched.c
blk-mq: move lockdep_assert_held() into elevator_exit
2019-09-26 00:45:05 -06: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: apply normal plugging for HDD
2019-09-27 11:40:21 -06:00
blk-mq.h
block: Disable write plugging for zoned block devices
2019-07-10 14:18:01 -06: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