Re: [PATCH] scsi: mpt3sas: fix hang on ata passthru commands

From: David Miller
Date: Thu Dec 29 2016 - 11:17:01 EST


From: Jason Baron <jbaron@xxxxxxxxxx>
Date: Wed, 28 Dec 2016 23:30:24 -0500

> On ata passthru commands scsih_qcmd() ends up spinning in
> scsi_wait_for_queuecommand() indefinitely. scsih_qcmd() is called from
> __blk_run_queue_uncond() which first increments request_fn_active to a
> non-zero value. Thus, scsi_wait_for_queuecommand() never completes because
> its spinning waiting for request_fn_active to become 0.
>
> Two patches interact here. The first:
>
> commit 18f6084a989b ("scsi: mpt3sas: Fix secure erase premature
> termination") calls scsi_internal_device_block() for ata passthru commands.
>
> The second patch:
>
> commit 669f044170d8 ("scsi: srp_transport: Move queuecommand() wait code
> to SCSI core") adds a call to scsi_wait_for_queuecommand() from
> scsi_internal_device_block().
>
> Add a new parameter to scsi_internal_device_block() to decide whether
> or not to invoke scsi_wait_for_queuecommand().
>
> Signed-off-by: Jason Baron <jbaron@xxxxxxxxxx>

Tested-by: David S. Miller <davem@xxxxxxxxxxxxx>