Re: [PATCH v2 2/6] esp_scsi: Track residual for PIO transfers
From: Geert Uytterhoeven
Date: Sun Oct 14 2018 - 06:56:18 EST
Hi Finn,
On Sun, Oct 14, 2018 at 8:36 AM Finn Thain <fthain@xxxxxxxxxxxxxxxxxxx> wrote:
> If a target disconnects during a PIO data transfer the command may
> fail when the target reconnects:
>
> scsi host1: DMA length is zero!
> scsi host1: cur adr[04380000] len[00000000]
>
> The scsi bus is then reset. This happens because the residual reached
> zero before the transfer was completed.
>
> The usual residual calculation relies on the Transfer Count registers
> which works for DMA transfers but not for PIO transfers. Fix the problem
> by storing the PIO transfer residual and using that to correctly
> calculate bytes_sent.
Thanks for yur patch!
> Fixes: 6fe07aaffbf0
Fixes: 6fe07aaffbf0 ("[SCSI] m68k: new mac_esp scsi driver")
> Tested-by: Stan Johnson <userm57@xxxxxxxxx>
> Signed-off-by: Finn Thain <fthain@xxxxxxxxxxxxxxxxxxx>
> Tested-by: Michael Schmitz <schmitzmic@xxxxxxxxx>
> --- a/drivers/scsi/esp_scsi.h
> +++ b/drivers/scsi/esp_scsi.h
> @@ -540,6 +540,8 @@ struct esp {
>
> void *dma;
> int dmarev;
> +
> + int send_cmd_residual;
unsigned int?
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds