lkml.org 
[lkml]   [2018]   [Sep]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 047/107] scsi: vmw_pvscsi: Return DID_RESET for status SAM_STAT_COMMAND_TERMINATED
    Date
    4.9-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Jim Gill <jgill@vmware.com>

    [ Upstream commit e95153b64d03c2b6e8d62e51bdcc33fcad6e0856 ]

    Commands that are reset are returned with status
    SAM_STAT_COMMAND_TERMINATED. PVSCSI currently returns DID_OK |
    SAM_STAT_COMMAND_TERMINATED which fails the command. Instead, set hostbyte
    to DID_RESET to allow upper layers to retry.

    Tested by copying a large file between two pvscsi disks on same adapter
    while performing a bus reset at 1-second intervals. Before fix, commands
    sometimes fail with DID_OK. After fix, commands observed to fail with
    DID_RESET.

    Signed-off-by: Jim Gill <jgill@vmware.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/scsi/vmw_pvscsi.c | 11 ++++++++---
    1 file changed, 8 insertions(+), 3 deletions(-)

    --- a/drivers/scsi/vmw_pvscsi.c
    +++ b/drivers/scsi/vmw_pvscsi.c
    @@ -564,9 +564,14 @@ static void pvscsi_complete_request(stru
    (btstat == BTSTAT_SUCCESS ||
    btstat == BTSTAT_LINKED_COMMAND_COMPLETED ||
    btstat == BTSTAT_LINKED_COMMAND_COMPLETED_WITH_FLAG)) {
    - cmd->result = (DID_OK << 16) | sdstat;
    - if (sdstat == SAM_STAT_CHECK_CONDITION && cmd->sense_buffer)
    - cmd->result |= (DRIVER_SENSE << 24);
    + if (sdstat == SAM_STAT_COMMAND_TERMINATED) {
    + cmd->result = (DID_RESET << 16);
    + } else {
    + cmd->result = (DID_OK << 16) | sdstat;
    + if (sdstat == SAM_STAT_CHECK_CONDITION &&
    + cmd->sense_buffer)
    + cmd->result |= (DRIVER_SENSE << 24);
    + }
    } else
    switch (btstat) {
    case BTSTAT_SUCCESS:

    \
     
     \ /
      Last update: 2018-09-03 19:11    [W:4.158 / U:0.480 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site