• James Bottomley's avatar
    [SCSI] fix recovered error handling · a9bddd74
    James Bottomley authored
    We have a problem with recovered error handling in that any command
    which goes down as BLOCK_PC but which returns a sense code of RECOVERED
    ERROR gets completed with -EIO.  For actual SG_IO commands, this doesn't
    matter at all, since the error return code gets dropped in favour of
    req->errors which contain the SCSI completion code.
    
    However, if this command is part of the block system, then it will pay
    attention to the returned error code.  In particularly if a SYNCHRONIZE
    CACHE from a barrier command completes with RECOVERED ERROR, the
    resulting -EIO on the barrier causes block to error the request and
    return it to the filesystem.  Fix this by converting the -EIO for
    recovered error to zero, plus remove the printing of this from sd and sr
    so the message isn't double printed.
    Signed-off-by: default avatarJames Bottomley <James.Bottomley@HansenPartnership.com>
    a9bddd74
scsi_lib.c 65 KB