Paolo Valente
52257ffbfc
block, bfq: put async queues for root bfq groups too
...
For each pair [device for which bfq is selected as I/O scheduler,
group in blkio/io], bfq maintains a corresponding bfq group. Each such
bfq group contains a set of async queues, with each async queue
created on demand, i.e., when some I/O request arrives for it. On
creation, an async queue gets an extra reference, to make sure that
the queue is not freed as long as its bfq group exists. Accordingly,
to allow the queue to be freed after the group exited, this extra
reference must released on group exit.
The above holds also for a bfq root group, i.e., for the bfq group
corresponding to the root blkio/io root for a given device. Yet, by
mistake, the references to the existing async queues of a root group
are not released when the latter exits. This causes a memory leak when
the instance of bfq for a given device exits. In a similar vein,
bfqg_stats_xfer_dead is not executed for a root group.
This commit fixes bfq_pd_offline so that the latter executes the above
missing operations for a root group too.
Reported-by: Holger Hoffstätte <holger@applied-asynchrony.com>
Reported-by: Guoqing Jiang <gqjiang@suse.com>
Tested-by: Holger Hoffstätte <holger@applied-asynchrony.com>
Signed-off-by: Davide Ferrari <davideferrari8@gmail.com>
Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2018-01-09 08:45:25 -07:00
..
partitions
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
badblocks.c
badblocks: fix wrong return value in badblocks_set if badblocks are disabled
2017-11-03 11:29:50 -07:00
bfq-cgroup.c
block, bfq: put async queues for root bfq groups too
2018-01-09 08:45:25 -07:00
bfq-iosched.c
block, bfq: remove batches of confusing ifdefs
2018-01-05 09:32:59 -07:00
bfq-iosched.h
block, bfq: let a queue be merged only shortly after starting I/O
2018-01-05 09:26:09 -07:00
bfq-wf2q.c
block, bfq: let a queue be merged only shortly after starting I/O
2018-01-05 09:26:09 -07:00
bio-integrity.c
block: remove unnecessary NULL checks in bioset_integrity_free()
2017-10-06 13:03:12 -06:00
bio.c
block: move bio_alloc_pages() to bcache
2018-01-06 09:18:00 -07:00
blk-cgroup.c
blkcg: add sanity check for blkcg policy operations
2017-11-04 12:31:15 -06:00
blk-core.c
blk-mq: quiesce queue before freeing queue
2018-01-06 09:25:36 -07:00
blk-exec.c
blk-flush.c
blk-mq: don't allocate driver tag upfront for flush rq
2017-11-04 12:40:13 -06:00
blk-integrity.c
blk-ioc.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
blk-lib.c
Merge branch 'for-4.15/block' of git://git.kernel.dk/linux-block
2017-11-14 15:32:19 -08:00
blk-map.c
Merge branch 'work.iov_iter' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2017-11-17 12:08:18 -08:00
blk-merge.c
block: blk-merge: remove unnecessary check
2018-01-06 09:18:00 -07:00
blk-mq-cpumap.c
blk-mq-debugfs.c
Merge branch 'for-4.15/block' of git://git.kernel.dk/linux-block
2017-11-14 15:32:19 -08:00
blk-mq-debugfs.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
blk-mq-pci.c
blk-mq-rdma.c
blk-mq-sched.c
blk-mq: remove confusing comment of blk_mq_sched_dispatch_requests
2018-01-05 08:36:33 -07:00
blk-mq-sched.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
blk-mq-sysfs.c
blk-mq-tag.c
blk-mq: improve heavily contended tag case
2017-12-22 11:09:37 -07:00
blk-mq-tag.h
Merge branch 'for-4.15/block' of git://git.kernel.dk/linux-block
2017-11-14 15:32:19 -08:00
blk-mq-virtio.c
blk-mq.c
blk-mq: fix kernel oops in blk_mq_tag_idle()
2018-01-09 08:39:31 -07:00
blk-mq.h
Merge branch 'for-4.15/block' of git://git.kernel.dk/linux-block
2017-11-14 15:32:19 -08:00
blk-settings.c
block: remove __bio_kmap_atomic
2017-11-10 19:53:25 -07:00
blk-softirq.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
blk-stat.c
treewide: setup_timer() -> timer_setup()
2017-11-21 15:57:07 -08:00
blk-stat.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
blk-sysfs.c
blk-sysfs: remove NULL pointer checking in queue_wb_lat_store
2017-11-23 22:00:17 -07:00
blk-tag.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
blk-throttle.c
treewide: setup_timer() -> timer_setup()
2017-11-21 15:57:07 -08:00
blk-timeout.c
block: Fix a race between blk_cleanup_queue() and timeout handling
2017-10-30 13:28:10 -06:00
blk-wbt.c
blk-wbt: fix comments typo
2017-11-23 22:00:20 -07:00
blk-wbt.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
blk-zoned.c
block: introduce zoned block devices zone write locking
2018-01-05 09:22:17 -07:00
blk.h
Merge branch 'for-4.15/block' of git://git.kernel.dk/linux-block
2017-11-14 15:32:19 -08:00
bounce.c
block: bounce: don't access bio->bi_io_vec in copy_to_high_bio_irq
2018-01-06 09:18:00 -07:00
bsg-lib.c
bsg-lib: fix use-after-free under memory-pressure
2017-10-04 08:35:04 -06:00
bsg.c
block: pass full fmode_t to blk_verify_command
2017-11-10 19:53:25 -07:00
cfq-iosched.c
cmdline-parser.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
compat_ioctl.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
deadline-iosched.c
deadline-iosched: Introduce zone locking support
2018-01-05 09:22:17 -07:00
elevator.c
blk-mq: quiesce queue during switching io sched and updating nr_requests
2018-01-06 09:25:36 -07:00
genhd.c
block: genhd.c: fix message typo
2017-11-19 11:02:19 -07:00
ioctl.c
block: move CAP_SYS_ADMIN check in blkdev_roset()
2017-10-25 12:25:00 -06:00
ioprio.c
Kconfig
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
Kconfig.iosched
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
kyber-iosched.c
block: kyber: check if there are requests in ctx in kyber_has_work()
2017-11-01 08:20:02 -06:00
Makefile
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
mq-deadline.c
mq-deadline: make it clear that __dd_dispatch_request() works on all hw queues
2018-01-06 09:23:11 -07:00
noop-iosched.c
opal_proto.h
block: sed-opal: Set MBRDone on S3 resume path if TPER is MBREnabled
2017-09-11 09:45:52 -06:00
partition-generic.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
scsi_ioctl.c
block: pass full fmode_t to blk_verify_command
2017-11-10 19:53:25 -07:00
sed-opal.c
block: sed-opal: Set MBRDone on S3 resume path if TPER is MBREnabled
2017-09-11 09:45:52 -06:00
t10-pi.c