On Sun, 7 Feb 2021 17:20:16 +0800, Ming Lei wrote: > scsi uses one global atomic variable to track queue depth for each > LUN/request queue. This way can't scale well when there is lots of CPU > cores and the disk is very fast. Broadcom guys has complained that their > high end HBA can't reach top performance because .device_busy is > operated in IO path. > > Replace the atomic variable sdev->device_busy with sbitmap for > tracking scsi device queue depth. > > [...] Applied to 5.13/scsi-queue, thanks! [01/13] sbitmap: remove sbitmap_clear_bit_unlock https://git.kernel.org/mkp/scsi/c/46d2a5813454 [02/13] sbitmap: maintain allocation round_robin in sbitmap https://git.kernel.org/mkp/scsi/c/ed9eb92974bc [03/13] sbitmap: add helpers for updating allocation hint https://git.kernel.org/mkp/scsi/c/a523156a9303 [04/13] sbitmap: move allocation hint into sbitmap https://git.kernel.org/mkp/scsi/c/30d4ee6f3a9d [05/13] sbitmap: export sbitmap_weight https://git.kernel.org/mkp/scsi/c/d9ba7618bec3 [06/13] sbitmap: add helper of sbitmap_calculate_shift https://git.kernel.org/mkp/scsi/c/5d747419d20e [07/13] blk-mq: add callbacks for storing & retrieving budget token https://git.kernel.org/mkp/scsi/c/9dda23635dbe [08/13] blk-mq: return budget token from .get_budget callback https://git.kernel.org/mkp/scsi/c/cd4ef15a289a [09/13] scsi: put hot fields of scsi_host_template into one cacheline https://git.kernel.org/mkp/scsi/c/a8474e7b28a0 [10/13] megaraid_sas: v2 replace sdev_busy with local counter https://git.kernel.org/mkp/scsi/c/d7afc2ed1447 [11/13] scsi: add scsi_device_busy() to read sdev->device_busy https://git.kernel.org/mkp/scsi/c/c300d1182331 [12/13] scsi: make sure sdev->queue_depth is <= max(shost->can_queue, 1024) https://git.kernel.org/mkp/scsi/c/b0a4b45dc841 [13/13] scsi: replace sdev->device_busy with sbitmap https://git.kernel.org/mkp/scsi/c/62b38e49fcf7 -- Martin K. Petersen Oracle Linux Engineering