[PATCH 1/6] cxlflash: Reset command ioasc
Andrew Donnellan
andrew.donnellan at au1.ibm.com
Thu Jan 4 17:33:48 AEDT 2018
On 04/01/18 09:54, Uma Krishnan wrote:
> In the event of a command failure, cxlflash returns the failure to the
> upper layers to process. After processing the error, when the command is
> queued again, the private command structure will not be zeroed and the
> ioasc could be stale. Per the SISLite specification, the AFU only sets the
> ioasc in the presence of a failure. Thus, even though the original command
> succeeds the second time, the command is considered a failure due to stale
> ioasc. This cycle repeats indefinitely and can cause a hang or IO failure.
>
> To fix the issue, clear the ioasc before queuing any command.
>
> Fixes: 479ad8e9d48c ("scsi: cxlflash: Remove zeroing of private command
> data")
> Signed-off-by: Uma Krishnan <ukrishn at linux.vnet.ibm.com>
Should this go to stable?
> ---
> drivers/scsi/cxlflash/main.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/scsi/cxlflash/main.c b/drivers/scsi/cxlflash/main.c
> index 38b3a9c..48d3663 100644
> --- a/drivers/scsi/cxlflash/main.c
> +++ b/drivers/scsi/cxlflash/main.c
> @@ -620,6 +620,7 @@ static int cxlflash_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *scp)
> cmd->parent = afu;
> cmd->hwq_index = hwq_index;
>
> + cmd->sa.ioasc = 0;
> cmd->rcb.ctx_id = hwq->ctx_hndl;
> cmd->rcb.msi = SISL_MSI_RRQ_UPDATED;
> cmd->rcb.port_sel = CHAN2PORTMASK(scp->device->channel);
>
--
Andrew Donnellan OzLabs, ADL Canberra
andrew.donnellan at au1.ibm.com IBM Australia Limited
More information about the Linuxppc-dev
mailing list