mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-06 00:39:48 +00:00
scsi: megaraid_sas: Remove IO buffer hole detection logic
As blk_queue_virt_boundary() API in slave_configure ensures that no IOs will come with holes/gaps. Hence, code logic to detect the holes/gaps in IO buffer is not required. Link: https://lore.kernel.org/r/20200508083838.22778-3-chandrakanth.patil@broadcom.com Signed-off-by: Sumit Saxena <sumit.saxena@broadcom.com> Signed-off-by: Chandrakanth Patil <chandrakanth.patil@broadcom.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
6c205a66d6
commit
84badfab0d
1 changed files with 0 additions and 58 deletions
|
@ -2070,7 +2070,6 @@ static bool
|
||||||
megasas_is_prp_possible(struct megasas_instance *instance,
|
megasas_is_prp_possible(struct megasas_instance *instance,
|
||||||
struct scsi_cmnd *scmd, int sge_count)
|
struct scsi_cmnd *scmd, int sge_count)
|
||||||
{
|
{
|
||||||
int i;
|
|
||||||
u32 data_length = 0;
|
u32 data_length = 0;
|
||||||
struct scatterlist *sg_scmd;
|
struct scatterlist *sg_scmd;
|
||||||
bool build_prp = false;
|
bool build_prp = false;
|
||||||
|
@ -2099,63 +2098,6 @@ megasas_is_prp_possible(struct megasas_instance *instance,
|
||||||
build_prp = true;
|
build_prp = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Below code detects gaps/holes in IO data buffers.
|
|
||||||
* What does holes/gaps mean?
|
|
||||||
* Any SGE except first one in a SGL starts at non NVME page size
|
|
||||||
* aligned address OR Any SGE except last one in a SGL ends at
|
|
||||||
* non NVME page size boundary.
|
|
||||||
*
|
|
||||||
* Driver has already informed block layer by setting boundary rules for
|
|
||||||
* bio merging done at NVME page size boundary calling kernel API
|
|
||||||
* blk_queue_virt_boundary inside slave_config.
|
|
||||||
* Still there is possibility of IO coming with holes to driver because of
|
|
||||||
* IO merging done by IO scheduler.
|
|
||||||
*
|
|
||||||
* With SCSI BLK MQ enabled, there will be no IO with holes as there is no
|
|
||||||
* IO scheduling so no IO merging.
|
|
||||||
*
|
|
||||||
* With SCSI BLK MQ disabled, IO scheduler may attempt to merge IOs and
|
|
||||||
* then sending IOs with holes.
|
|
||||||
*
|
|
||||||
* Though driver can request block layer to disable IO merging by calling-
|
|
||||||
* blk_queue_flag_set(QUEUE_FLAG_NOMERGES, sdev->request_queue) but
|
|
||||||
* user may tune sysfs parameter- nomerges again to 0 or 1.
|
|
||||||
*
|
|
||||||
* If in future IO scheduling is enabled with SCSI BLK MQ,
|
|
||||||
* this algorithm to detect holes will be required in driver
|
|
||||||
* for SCSI BLK MQ enabled case as well.
|
|
||||||
*
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
scsi_for_each_sg(scmd, sg_scmd, sge_count, i) {
|
|
||||||
if ((i != 0) && (i != (sge_count - 1))) {
|
|
||||||
if (mega_mod64(sg_dma_len(sg_scmd), mr_nvme_pg_size) ||
|
|
||||||
mega_mod64(sg_dma_address(sg_scmd),
|
|
||||||
mr_nvme_pg_size)) {
|
|
||||||
build_prp = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((sge_count > 1) && (i == 0)) {
|
|
||||||
if ((mega_mod64((sg_dma_address(sg_scmd) +
|
|
||||||
sg_dma_len(sg_scmd)),
|
|
||||||
mr_nvme_pg_size))) {
|
|
||||||
build_prp = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((sge_count > 1) && (i == (sge_count - 1))) {
|
|
||||||
if (mega_mod64(sg_dma_address(sg_scmd),
|
|
||||||
mr_nvme_pg_size)) {
|
|
||||||
build_prp = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return build_prp;
|
return build_prp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue