Commit 49524b3c authored by Shivasharan S's avatar Shivasharan S Committed by Martin K. Petersen

scsi: megaraid_sas: add correct return type check for ldio hint logic for raid1

Return value check of atomic_dec_if_positive is required as it returns
old value minus one.  Without this fix, driver will send small ios to
firmware path and that will be a performance issue.

Not critical, but good to have r1_ldio_hint as default value in sdev
private.
Signed-off-by: default avatarKashyap Desai <kashyap.desai@broadcom.com>
Signed-off-by: default avatarShivasharan S <shivasharan.srikanteshwara@broadcom.com>
Reviewed-by: default avatarTomas Henzl <thenzl@redhat.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 64ff64b9
...@@ -1963,6 +1963,9 @@ static int megasas_slave_alloc(struct scsi_device *sdev) ...@@ -1963,6 +1963,9 @@ static int megasas_slave_alloc(struct scsi_device *sdev)
if (!mr_device_priv_data) if (!mr_device_priv_data)
return -ENOMEM; return -ENOMEM;
sdev->hostdata = mr_device_priv_data; sdev->hostdata = mr_device_priv_data;
atomic_set(&mr_device_priv_data->r1_ldio_hint,
instance->r1_ldio_hint_default);
return 0; return 0;
} }
......
...@@ -2338,7 +2338,7 @@ megasas_build_ldio_fusion(struct megasas_instance *instance, ...@@ -2338,7 +2338,7 @@ megasas_build_ldio_fusion(struct megasas_instance *instance,
fp_possible = false; fp_possible = false;
atomic_dec(&instance->fw_outstanding); atomic_dec(&instance->fw_outstanding);
} else if ((scsi_buff_len > MR_LARGE_IO_MIN_SIZE) || } else if ((scsi_buff_len > MR_LARGE_IO_MIN_SIZE) ||
atomic_dec_if_positive(&mrdev_priv->r1_ldio_hint)) { (atomic_dec_if_positive(&mrdev_priv->r1_ldio_hint) > 0)) {
fp_possible = false; fp_possible = false;
atomic_dec(&instance->fw_outstanding); atomic_dec(&instance->fw_outstanding);
if (scsi_buff_len > MR_LARGE_IO_MIN_SIZE) if (scsi_buff_len > MR_LARGE_IO_MIN_SIZE)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment