linux/include
Yu Kuai 4f1731df60 blk-mq: fix potential io hang by wrong 'wake_batch'
In __blk_mq_tag_busy/idle(), updating 'active_queues' and calculating
'wake_batch' is not atomic:

t1:			t2:
_blk_mq_tag_busy	blk_mq_tag_busy
inc active_queues
// assume 1->2
			inc active_queues
			// 2 -> 3
			blk_mq_update_wake_batch
			// calculate based on 3
blk_mq_update_wake_batch
/* calculate based on 2, while active_queues is actually 3. */

Fix this problem by protecting them wih 'tags->lock', this is not a hot
path, so performance should not be concerned. And now that all writers
are inside the lock, switch 'actives_queues' from atomic to unsigned
int.

Fixes: 180dccb0db ("blk-mq: fix tag_get wait task can't be awakened")
Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Link: https://lore.kernel.org/r/20230610023043.2559121-1-yukuai1@huaweicloud.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2023-06-12 09:55:53 -06:00
..
acpi Power management updates for 6.4-rc1 2023-04-25 18:44:10 -07:00
asm-generic Locking changes in v6.4: 2023-05-05 12:56:55 -07:00
clocksource
crypto This update includes the following changes: 2023-04-26 08:32:52 -07:00
drm Merge tag 'drm-misc-fixes-2023-05-11' of git://anongit.freedesktop.org/drm/drm-misc into drm-fixes 2023-05-12 05:32:36 +10:00
dt-bindings - mailbox api: allow direct registration to a channel 2023-05-07 10:17:33 -07:00
keys
kunit
kvm s390: 2023-05-01 12:06:20 -07:00
linux blk-mq: fix potential io hang by wrong 'wake_batch' 2023-06-12 09:55:53 -06:00
math-emu
media
memory
misc
net bonding: fix send_peer_notif overflow 2023-05-10 09:27:20 +01:00
pcmcia
ras
rdma
rv
scsi scsi: replace the fmode_t argument to scsi_ioctl with a simple bool 2023-06-12 08:04:04 -06:00
soc Nothing looks out of the ordinary in this batch of clk driver updates. There 2023-04-29 17:29:39 -07:00
sound ASoC: Updates for v6.4 2023-04-24 15:15:31 +02:00
target
trace block: introduce block_io_start/block_io_done tracepoints 2023-05-24 08:38:59 -06:00
uapi pktcdvd: Get rid of custom printing macros 2023-06-07 14:26:09 -06:00
ufs SCSI misc on 20230426 2023-04-26 15:39:25 -07:00
vdso
video
xen