Messages in this thread | | | Subject | Re: [PATCH 4/5] scsi: libsas: check the ata device status by ata_dev_enabled() | From | Jason Yan <> | Date | Wed, 19 Sep 2018 10:54:32 +0800 |
| |
On 2018/9/18 21:54, John Garry wrote: > + > > On 12/09/2018 09:29, Jason Yan wrote: >> 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 >> skiped ATA_DEV_UNKNOWN. This will make libsas think the ata device > > /s/skiped/skipped/ >
OK, thanks.
>> 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@huawei.com> >> Signed-off-by: Jason Yan <yanaijie@huawei.com> > > Reviewed-by: John Garry <john.garry@huawei.com> > >> CC: John Garry <john.garry@huawei.com> >> CC: Johannes Thumshirn <jthumshirn@suse.de> >> CC: Ewan Milne <emilne@redhat.com> >> CC: Christoph Hellwig <hch@lst.de> >> CC: Tomas Henzl <thenzl@redhat.com> >> CC: Dan Williams <dan.j.williams@intel.com> >> CC: Hannes Reinecke <hare@suse.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 64a958a99f6a..4f6cdf53e913 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))) > > I do wonder if ata_dev_disabled() needs to be updated to cover > ATA_DEV_UNKNOWN also or even instead of this change? >
We cannot do this now because this will make the ata eh process wrong.
>> sas_fail_probe(dev, __func__, -ENODEV); >> } >> >> > > > > . >
| |