linux/block
Ming Lei f96626beb7 blk-mq: fix CPU hotplug handling
commit 2a34c0872a upstream.

hctx->tags has to be set as NULL in case that it is to be unmapped
no matter if set->tags[hctx->queue_num] is NULL or not in blk_mq_map_swqueue()
because shared tags can be freed already from another request queue.

The same situation has to be considered during handling CPU online too.
Unmapped hw queue can be remapped after CPU topo is changed, so we need
to allocate tags for the hw queue in blk_mq_map_swqueue(). Then tags
allocation for hw queue can be removed in hctx cpu online notifier, and it
is reasonable to do that after mapping is updated.

Reported-by: Dongsu Park <dongsu.park@profitbricks.com>
Tested-by: Dongsu Park <dongsu.park@profitbricks.com>
Signed-off-by: Ming Lei <ming.lei@canonical.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
History 2015-05-20 13:25:56 +01:00
..
partitions partitions: aix.c: off by one bug 2014-10-05 13:41:11 -07:00
bio-integrity.c block: move bio.c and bio-integrity.c from fs/ to block/ 2014-05-19 08:34:46 -06:00
bio.c block: add support for limiting gaps in SG lists 2014-06-24 16:22:24 -06:00
blk-cgroup.c blkcg: don't call into policy draining if root_blkg is already gone 2014-07-12 17:55:10 +02:00
blk-cgroup.h Revert "block: add __init to blkcg_policy_register" 2014-06-22 16:34:11 -06:00
blk-core.c blk-mq: Fix a use-after-free 2015-01-15 10:43:41 +00:00
blk-exec.c block: blk-exec.c: Cleaning up local variable address returnd 2014-06-08 19:51:31 -06:00
blk-flush.c block: remove elv_abort_queue and blk_abort_flushes 2014-06-11 15:31:21 -06:00
blk-integrity.c bio-integrity: Convert to bvec_iter 2013-11-23 22:33:50 -08:00
blk-ioc.c block: Substitute rcu_access_pointer() for rcu_dereference_raw() 2014-02-18 12:21:26 -08:00
blk-iopoll.c Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip into next 2014-06-03 12:57:53 -07:00
blk-lib.c block/blk-lib.c: make __blkdev_issue_zeroout static 2014-05-26 17:39:09 -06:00
blk-map.c block: remove struct request buffer member 2014-04-15 14:03:02 -06:00
blk-merge.c Fix bug in blk_rq_merge_ok 2015-04-10 10:03:59 +01:00
blk-mq-cpu.c blk-mq: add file comments and update copyright notices 2014-05-28 10:15:41 -06:00
blk-mq-cpumap.c blk-mq: use 'nr_cpu_ids' as highest CPU ID count for hwq <-> cpu map 2015-01-12 15:43:57 +00:00
blk-mq-sysfs.c blk-mq: Fix uninitialized kobject at CPU hotplugging 2015-01-15 10:43:50 +00:00
blk-mq-tag.c blk-mq: fix double-free in error path 2015-03-02 13:17:12 +00:00
blk-mq-tag.h blk-mq: bitmap tag: fix races on shared ::wake_index fields 2014-06-17 22:12:35 -07:00
blk-mq.c blk-mq: fix CPU hotplug handling 2015-05-20 13:25:56 +01:00
blk-mq.h blk-mq: fix schedule from atomic context 2014-06-03 21:04:39 -06:00
blk-settings.c block: fix alignment_offset math that assumes io_min is a power-of-2 2014-11-17 14:11:44 +00:00
blk-softirq.c block: fix regression with block enabled tagging 2014-04-09 21:54:06 -06:00
blk-sysfs.c blk-mq: Fix a use-after-free 2015-01-15 10:43:41 +00:00
blk-tag.c block: don't assume last put of shared tags is for the host 2014-07-08 12:25:28 +02:00
blk-throttle.c blk-throttle: check stats_cpu before reading it from sysfs 2015-03-02 15:04:36 +00:00
blk-timeout.c block: ensure that the timer is always added 2014-05-30 15:41:39 -06:00
blk.h block: remove elv_abort_queue and blk_abort_flushes 2014-06-11 15:31:21 -06:00
bounce.c mm: convert some level-less printks to pr_* 2014-06-06 16:08:18 -07:00
bsg-lib.c bsg: Remove unused function bsg_goose_queue() 2012-12-06 14:33:02 +01:00
bsg.c block: add blk_rq_set_block_pc() 2014-06-06 07:57:37 -06:00
cfq-iosched.c cfq-iosched: handle failure of cfq group allocation 2015-03-02 13:17:10 +00:00
cmdline-parser.c block: remove unrelated header files and export symbol 2014-01-21 20:18:26 -08:00
compat_ioctl.c block: provide compat ioctl for BLKZEROOUT 2014-07-14 12:27:20 +02:00
deadline-iosched.c block: Stop abusing csd.list for fifo_time 2014-02-24 14:46:32 -08:00
elevator.c Revert "block: add __init to elv_register" 2014-06-22 16:34:11 -06:00
genhd.c genhd: check for int overflow in disk_expand_part_tbl() 2015-01-05 13:48:47 +00:00
ioctl.c block: replace IS_ERR and PTR_ERR with PTR_ERR_OR_ZERO 2013-11-08 09:05:31 -07:00
ioprio.c block: Fix computation of merged request priority 2014-11-20 12:01:52 +00:00
Kconfig block: change config option name for cmdline partition parsing 2013-09-30 14:31:02 -07:00
Kconfig.iosched blkcg: make CONFIG_BLK_CGROUP bool 2012-03-06 21:27:21 +01:00
Makefile block: move mm/bounce.c to block/ 2014-05-19 20:01:52 -06:00
noop-iosched.c elevator: Fix a race in elevator switching 2013-07-03 13:25:24 +02:00
partition-generic.c block: Fix dev_t minor allocation lifetime 2014-10-05 13:41:05 -07:00
scsi_ioctl.c scsi: Fix error handling in SCSI_IOCTL_SEND_COMMAND 2014-11-13 11:48:39 +00:00