• James Bottomley's avatar
    [SCSI] Retry commands with UNIT_ATTENTION sense codes to fix ext3/ext4 I/O error · 77a42297
    James Bottomley authored
    There's nastyness in the way we currently handle barriers (and
    discards): They're effectively filesystem commands, but they get
    processed as BLOCK_PC commands.  Unfortunately BLOCK_PC commands are
    taken by SCSI to be SG_IO commands and the issuer expects to see and
    handle any returned errors, however trivial.  This leads to a huge
    problem, because the block layer doesn't expect this to happen and any
    trivially retryable error on a barrier causes an immediate I/O error
    to the filesystem.
    
    The only real way to hack around this is to take the usual class of
    offending errors (unit attentions) and make them all retryable in the
    case of a REQ_HARDBARRIER.  A correct fix would involve a rework of
    the entire block and SCSI submit system, and so is out of scope for a
    quick fix.
    
    Cc: Hannes Reinecke <hare@suse.de>
    Cc: Stable Tree <stable@kernel.org>
    Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
    77a42297
scsi_error.c 56.3 KB