mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-26 19:00:25 +00:00
scsi: megaraid_sas: set residual bytes count during IO completion
Fixing issue of not setting residual bytes correctly. Signed-off-by: Shivasharan S <shivasharan.srikanteshwara@broadcom.com> Signed-off-by: Kashyap Desai <kashyap.desai@broadcom.com> Reviewed-by: Hannes Reinecke <hare@suse.com> Reviewed-by: Tomas Henzl <thenzl@redhat.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
a48ba0eca0
commit
31d9a57b41
1 changed files with 10 additions and 0 deletions
|
@ -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,
|
||||||
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:
|
||||||
|
|
Loading…
Reference in a new issue