Re: scsi_error: do not allow IO errors with certain ILLEGAL_REQUESTsense to be retryable

From: Mike Snitzer
Date: Mon Feb 13 2012 - 14:36:25 EST


On Mon, Feb 13 2012 at 2:16pm -0500,
Martin K. Petersen <martin.petersen@xxxxxxxxxx> wrote:

> >>>>> "Mike" == Mike Snitzer <snitzer@xxxxxxxxxx> writes:
>
> >> I don't have a fundamental problem with your patch. But since we
> >> explicitly handle ILLEGAL REQUEST with 0x20 and 0x24 in sd.c I wonder
> >> what's broken? We should disable discard support if the WRITE SAME w/
> >> UNMAP fails.
>
> Mike> Yeah, I thought the disabling would be sufficient too. But
> Mike> unfortunately multipath doesn't inspect the request it is retrying
> Mike> (after it fails the path the request just failed on).
>
> Well, we shouldn't be returning something that multipath should ever act
> on.
>
> I think I understand what's going on. Can you try the following patch?

Looks good to me (small nit below), it'll solve the immediate problem,
I'll pass it on. Please add my:

Acked-by: Mike Snitzer <snitzer@xxxxxxxxxx>

But I also think establishing a baseline of TARGET_ERROR for certain
ILLEGAL REQUEST is still sane and should go in too...

Thanks,
Mike

> diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
> index b2c95db..4e8d0b6 100644
> --- a/drivers/scsi/scsi_lib.c
> +++ b/drivers/scsi/scsi_lib.c
> @@ -879,6 +879,7 @@ void scsi_io_completion(struct scsi_cmnd *cmd, unsigned int good_bytes)
> cmd->cmnd[0] == WRITE_SAME_16 ||
> cmd->cmnd[0] == WRITE_SAME)) {
> description = "Discard failure";
> + error = -EREMOTEIO;
> action = ACTION_FAIL;

Previous DIX -EILSEQ code block sets error after action. Should follow
that order here? Purely an aesthetics thing.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/