kernel_optimize_test/block
Jianchao Wang f5bbbbe4d6 blk-mq: sync the update nr_hw_queues with blk_mq_queue_tag_busy_iter
For blk-mq, part_in_flight/rw will invoke blk_mq_in_flight/rw to
account the inflight requests. It will access the queue_hw_ctx and
nr_hw_queues w/o any protection. When updating nr_hw_queues and
blk_mq_in_flight/rw occur concurrently, panic comes up.

Before update nr_hw_queues, the q will be frozen. So we could use
q_usage_counter to avoid the race. percpu_ref_is_zero is used here
so that we will not miss any in-flight request. The access to
nr_hw_queues and queue_hw_ctx in blk_mq_queue_tag_busy_iter are
under rcu critical section, __blk_mq_update_nr_hw_queues could use
synchronize_rcu to ensure the zeroed q_usage_counter to be globally
visible.

Signed-off-by: Jianchao Wang <jianchao.w.wang@oracle.com>
Reviewed-by: Ming Lei <ming.lei@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2018-08-21 09:02:56 -06:00
..
partitions partitions/aix: append null character to print data from disk 2018-07-27 09:17:41 -06:00
badblocks.c
bfq-cgroup.c block, bfq: return nbytes and not zero from struct cftype .write() method 2018-08-16 13:11:16 -06:00
bfq-iosched.c block, bfq: reduce write overcharge 2018-08-16 13:08:13 -06:00
bfq-iosched.h
bfq-wf2q.c block, bfq: improve code of bfq_bfqq_charge_time 2018-08-16 13:08:15 -06:00
bio-integrity.c block: move bio_integrity_{intervals,bytes} into blkdev.h 2018-07-26 15:49:41 -06:00
bio.c block: bvec_nr_vecs() returns value for wrong slab 2018-08-09 08:25:04 -06:00
blk-cgroup.c blk-cgroup: hold the queue ref during throttling 2018-08-01 09:16:03 -06:00
blk-core.c block: remove duplicate initialization 2018-08-17 12:33:36 -06:00
blk-exec.c
blk-flush.c
blk-integrity.c
blk-ioc.c
blk-iolatency.c block: make iolatency avg_lat exponentially decay 2018-08-02 09:58:14 -06:00
blk-lib.c
blk-map.c
blk-merge.c
blk-mq-cpumap.c
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: init hctx sched after update ctx and hctx mapping 2018-08-21 09:02:55 -06:00
blk-mq-sched.h blk-mq: init hctx sched after update ctx and hctx mapping 2018-08-21 09:02:55 -06:00
blk-mq-sysfs.c
blk-mq-tag.c blk-mq: sync the update nr_hw_queues with blk_mq_queue_tag_busy_iter 2018-08-21 09:02:56 -06:00
blk-mq-tag.h
blk-mq-virtio.c
blk-mq.c blk-mq: sync the update nr_hw_queues with blk_mq_queue_tag_busy_iter 2018-08-21 09:02:56 -06:00
blk-mq.h blk-mq: issue directly if hw queue isn't busy in case of 'none' 2018-07-17 16:04:00 -06:00
blk-rq-qos.c blk-rq-qos: make depth comparisons unsigned 2018-07-22 11:30:53 -06:00
blk-rq-qos.h blk-rq-qos: make depth comparisons unsigned 2018-07-22 11:30:53 -06:00
blk-settings.c block: allow max_discard_segments to be stacked 2018-07-24 14:46:39 -06:00
blk-softirq.c
blk-stat.c
blk-stat.h
blk-sysfs.c blkcg: Make blkg_root_lookup() work for queues in bypass mode 2018-08-11 15:41:25 -06:00
blk-tag.c
blk-throttle.c Blk-throttle: reduce tail io latency when iops limit is enforced 2018-08-09 12:43:16 -06:00
blk-timeout.c
blk-wbt.c blk-wbt: fix IO hang in wbt_wait() 2018-08-14 11:05:52 -06:00
blk-wbt.h
blk-zoned.c
blk.h blk-mq: init hctx sched after update ctx and hctx mapping 2018-08-21 09:02:55 -06:00
bounce.c block: unexport bio_clone_bioset 2018-07-24 14:43:26 -06:00
bsg-lib.c block/bsg-lib: use PTR_ERR_OR_ZERO to simplify the flow path 2018-08-01 09:13:03 -06:00
bsg.c Linux 4.18-rc6 2018-08-05 19:32:09 -06:00
cfq-iosched.c cfq: Suppress compiler warnings about comparisons 2018-08-07 17:57:13 -06:00
cmdline-parser.c
compat_ioctl.c
deadline-iosched.c
elevator.c blk-mq: init hctx sched after update ctx and hctx mapping 2018-08-21 09:02:55 -06:00
genhd.c block: Track DISCARD statistics and output them in stat and diskstat 2018-07-18 08:44:22 -06:00
ioctl.c
ioprio.c
Kconfig
Kconfig.iosched
kyber-iosched.c
Makefile
mq-deadline.c
noop-iosched.c
opal_proto.h
partition-generic.c block: Track DISCARD statistics and output them in stat and diskstat 2018-07-18 08:44:22 -06:00
scsi_ioctl.c
sed-opal.c
t10-pi.c block: move dif_prepare/dif_complete functions to block layer 2018-07-30 08:27:02 -06:00