提交 31d9a57b 编写于 作者: S Shivasharan S 提交者: Martin K. Petersen

scsi: megaraid_sas: set residual bytes count during IO completion

Fixing issue of not setting residual bytes correctly.
Signed-off-by: NShivasharan S <shivasharan.srikanteshwara@broadcom.com>
Signed-off-by: NKashyap Desai <kashyap.desai@broadcom.com>
Reviewed-by: NHannes Reinecke <hare@suse.com>
Reviewed-by: NTomas Henzl <thenzl@redhat.com>
Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
上级 a48ba0ec
...@@ -1445,6 +1445,7 @@ map_cmd_status(struct fusion_context *fusion, ...@@ -1445,6 +1445,7 @@ map_cmd_status(struct fusion_context *fusion,
struct scsi_cmnd *scmd, u8 status, u8 ext_status, struct scsi_cmnd *scmd, u8 status, u8 ext_status,
u32 data_length, u8 *sense) u32 data_length, u8 *sense)
{ {
int resid;
switch (status) { switch (status) {
...@@ -1467,6 +1468,15 @@ map_cmd_status(struct fusion_context *fusion, ...@@ -1467,6 +1468,15 @@ map_cmd_status(struct fusion_context *fusion,
SCSI_SENSE_BUFFERSIZE); SCSI_SENSE_BUFFERSIZE);
scmd->result |= DRIVER_SENSE << 24; 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; break;
case MFI_STAT_LD_OFFLINE: case MFI_STAT_LD_OFFLINE:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册