The following patches allow iscsi to transmit the initial iscsi PDU and data from the kblockd context similar to how nvme/tcp does it. This has the benefit that in a lot of our setups, we run number_of_sessions == CPUs, so the apps performing IO share the CPU with the iscsi layer. Right now, a lot of times we end up going from kblockd to the iscsi workqueue which just adds an extra hop. By running from the kblockd workqueue we see improvements of 20-30% in IOPs and throughput. I made this a RFC and cc'd Ming and Bart because I wanted to get some extra feed back on the first patch: scsi: Allow drivers to set BLK_MQ_F_BLOCKING because you guys know that code. For example the iscsi layer doesn't use scsi_host_block so we won't run into problems there. But I wanted to make sure there were not other possible issues. The following patches were made over this iscsi patchset https://lore.kernel.org/linux-scsi/20220308002747.122682-1-michael.christie@xxxxxxxxxx/T/#t the scsi patch applies over Linus or Martin's tree.