> -----Original Message-----
> From: Christoph Hellwig [mailto:[email protected]]
> Sent: Thursday, 30 October, 2014 4:27 AM
> To: [email protected]
> Cc: Douglas Gilbert; Elliott, Robert (Server Storage)
> Subject: [PATCH 6/6] scsi: return EAGAIN when resetting a device
> under EH
>
> Signed-off-by: Christoph Hellwig <[email protected]>
> ---
> drivers/scsi/scsi_ioctl.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/scsi/scsi_ioctl.c b/drivers/scsi/scsi_ioctl.c
> index 712f159..c4f7b56 100644
> --- a/drivers/scsi/scsi_ioctl.c
> +++ b/drivers/scsi/scsi_ioctl.c
> @@ -278,7 +278,7 @@ int
> scsi_ioctl_block_when_processing_errors(struct scsi_device *sdev, int
> cmd,
> {
> if (cmd == SG_SCSI_RESET && ndelay) {
> if (scsi_host_in_recovery(sdev->host))
> - return -ENODEV;
> + return -EAGAIN;
> } else {
> if (!scsi_block_when_processing_errors(sdev))
> return -ENODEV;
> --
> 1.9.1
This is how sg_reset responds to -EAGAIN, which seems reasonable:
sg_reset: starting device reset
sg_reset: SG_SCSI_RESET failed: Resource temporarily unavailable
That is easy to trigger when running sg_reset in parallel to
multiple devices presented by the same controller. In one
example to 16 devices, 10 got that result while 6 succeeded.
Tested-by: Robert Elliott <[email protected]>
Reviewed-by: Robert Elliott <[email protected]>
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html