APPLIED[B/C]: [PATCH][Disco][SRU Cosmic][SRU Bionic] scsi: libsas: check the ata device status by ata_dev_enabled()
Kleber Souza
kleber.souza at canonical.com
Thu Jan 10 13:04:54 UTC 2019
On 12/18/18 11:26 PM, dann frazier wrote:
> From: Jason Yan <yanaijie at huawei.com>
>
> BugLink: https://bugs.launchpad.net/bugs/1809046
>
> When ata device IDENTIFY failed, the ata device status is ATA_DEV_UNKNOWN. The
> libata reported like:
>
> [113518.620433] ata5.00: qc timeout (cmd 0xec)
> [113518.653646] ata5.00: failed to IDENTIFY (I/O error, err_mask=0x4)
>
> But libsas verifies the device status by ata_dev_disabled(), which skipped
> ATA_DEV_UNKNOWN. This will make libsas think the ata device probing succeed
> the device cannot be actually brought up. And even the new bcast of this
> device will be considered as flutter and will not probe this device again.
>
> Change ata_dev_disabled() to !ata_dev_enabled() so that libsas can deal with
> this if the ata device probe failed. New bcasts can let us try to probe the
> device again and bring it up if it is fine to IDENTIFY.
>
> Tested-by: Zhou Yupeng <zhouyupeng1 at huawei.com>
> Signed-off-by: Jason Yan <yanaijie at huawei.com>
> CC: John Garry <john.garry at huawei.com>
> CC: Johannes Thumshirn <jthumshirn at suse.de>
> CC: Ewan Milne <emilne at redhat.com>
> CC: Christoph Hellwig <hch at lst.de>
> CC: Tomas Henzl <thenzl at redhat.com>
> CC: Dan Williams <dan.j.williams at intel.com>
> CC: Hannes Reinecke <hare at suse.com>
> Reviewed-by: John Garry <john.garry at huawei.com>
> Reviewed-by: Hannes Reinecke <hare at suse.com>
> Reviewed-by: Johannes Thumshirn <jthumshirn at suse.de>
> Reviewed-by: Christoph Hellwig <hch at lst.de>
> Signed-off-by: Martin K. Petersen <martin.petersen at oracle.com>
> (cherry picked from commit 437207d3697f500f34f126a8ab1c29417ba4a184)
> Signed-off-by: dann frazier <dann.frazier at canonical.com>
> ---
> drivers/scsi/libsas/sas_ata.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/scsi/libsas/sas_ata.c b/drivers/scsi/libsas/sas_ata.c
> index 64a958a99f6a8..4f6cdf53e9136 100644
> --- a/drivers/scsi/libsas/sas_ata.c
> +++ b/drivers/scsi/libsas/sas_ata.c
> @@ -654,7 +654,7 @@ void sas_probe_sata(struct asd_sas_port *port)
> /* if libata could not bring the link up, don't surface
> * the device
> */
> - if (ata_dev_disabled(sas_to_ata_dev(dev)))
> + if (!ata_dev_enabled(sas_to_ata_dev(dev)))
> sas_fail_probe(dev, __func__, -ENODEV);
> }
>
Applied to bionic/master-next and cosmic/master-next branches.
Thanks,
Kleber
More information about the kernel-team
mailing list