Commit 31d9a57b authored by Shivasharan S's avatar Shivasharan S Committed by Martin K. Petersen
Browse files

scsi: megaraid_sas: set residual bytes count during IO completion



Fixing issue of not setting residual bytes correctly.

Signed-off-by: default avatarShivasharan S <shivasharan.srikanteshwara@broadcom.com>
Signed-off-by: default avatarKashyap Desai <kashyap.desai@broadcom.com>
Reviewed-by: default avatarHannes Reinecke <hare@suse.com>
Reviewed-by: default avatarTomas Henzl <thenzl@redhat.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent a48ba0ec
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -1445,6 +1445,7 @@ map_cmd_status(struct fusion_context *fusion,
	struct scsi_cmnd *scmd, u8 status, u8 ext_status,
			u32 data_length, u8 *sense)
{
	int resid;

	switch (status) {

@@ -1467,6 +1468,15 @@ map_cmd_status(struct fusion_context *fusion,
			       SCSI_SENSE_BUFFERSIZE);
			scmd->result |= DRIVER_SENSE << 24;
		}

		/*
		 * If the  IO request is partially completed, then MR FW will
		 * update "io_request->DataLength" field with actual number of
		 * bytes transferred.Driver will set residual bytes count in
		 * SCSI command structure.
		 */
		resid = (scsi_bufflen(scmd) - data_length);
		scsi_set_resid(scmd, resid);
		break;

	case MFI_STAT_LD_OFFLINE: