+13
−4
+25
−11
+21
−4
+11
−5
+2
−2
Loading
mainline inclusion from mainline-v5.13-rc1 commit 2a5a24aa category: feature bugzilla: https://gitee.com/openeuler/kernel/issues/IB4C27 Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2a5a24aa83382a88c43d18a901fab66e6ffe1199 ------------------------------------------- SCSI uses a global atomic variable to track queue depth for each LUN/request queue. This doesn't scale well when there are lots of CPU cores and the disk is very fast. It has been observed that IOPS is affected a lot by tracking queue depth via sdev->device_busy in the I/O path. Return budget token from .get_budget callback. The budget token can be passed to driver so that we can replace the atomic variable with sbitmap_queue and alleviate the scaling problems that way. Link: https://lore.kernel.org/r/20210122023317.687987-9-ming.lei@redhat.com Cc: Omar Sandoval <osandov@fb.com> Cc: Kashyap Desai <kashyap.desai@broadcom.com> Cc: Sumanesh Samanta <sumanesh.samanta@broadcom.com> Cc: Ewan D. Milne <emilne@redhat.com> Tested-by:Sumanesh Samanta <sumanesh.samanta@broadcom.com> Reviewed-by:
Hannes Reinecke <hare@suse.de> Signed-off-by:
Ming Lei <ming.lei@redhat.com> Signed-off-by:
Martin K. Petersen <martin.petersen@oracle.com> Conflicts: block/blk-mq.c [The conflict here is due to inconsistencies in the context caused by 65267b13 ("blk-mq: Fix potential io hung for shared sbitmap per tagset").] block/blk-mq.h [The conflict here is due to inconsistencies in the context caused by badcb143 ("block: update nsecs[] in part_") and 2ed9d17c ("block : don't use cmpxchg64() on").] Signed-off-by:
Zheng Qixing <zhengqixing@huawei.com>