]> git.baikalelectronics.ru Git - kernel.git/commit
scsi: make sure that request queue queiesce and unquiesce balanced
authorMing Lei <ming.lei@redhat.com>
Tue, 9 Nov 2021 07:11:43 +0000 (15:11 +0800)
committerJens Axboe <axboe@kernel.dk>
Tue, 9 Nov 2021 15:14:27 +0000 (08:14 -0700)
commitec2d1e382ca72c68d5487a410d098f1ee5521579
tree8c51175536212413500e304da07ad81fb1ec19b8
parent1790dbab3809c091af28cbfa709ffb31c729b2b1
scsi: make sure that request queue queiesce and unquiesce balanced

For fixing queue quiesce race between driver and block layer(elevator
switch, update nr_requests, ...), we need to support concurrent quiesce
and unquiesce, which requires the two call balanced.

It isn't easy to audit that in all scsi drivers, especially the two may
be called from different contexts, so do it in scsi core with one
per-device atomic variable to balance quiesce and unquiesce.

Reported-by: Yi Zhang <yi.zhang@redhat.com>
Fixes: d640c198600c ("blk-mq: support concurrent queue quiesce/unquiesce")
Signed-off-by: Ming Lei <ming.lei@redhat.com>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Link: https://lore.kernel.org/r/20211109071144.181581-4-ming.lei@redhat.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/scsi/scsi_lib.c
include/scsi/scsi_device.h