From: Damien Le Moal <damien.lemoal@opensource.wdc.com>
To: Jason Yan <yanaijie@huawei.com>,
John Garry <john.g.garry@oracle.com>,
Xingui Yang <yangxingui@huawei.com>,
jejb@linux.ibm.com, martin.petersen@oracle.com,
linux-ide@vger.kernel.org, hare@suse.com, hch@lst.de
Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org,
linuxarm@huawei.com, prime.zeng@hisilicon.com,
kangfenglong@huawei.com
Subject: Re: [PATCH V2] scsi: libsas: Directly kick-off EH when ATA device fell off
Date: Tue, 20 Dec 2022 07:59:06 +0900 [thread overview]
Message-ID: <234e04db-7539-07e4-a6b8-c6b05f78193d@opensource.wdc.com> (raw)
In-Reply-To: <60ace19e-d029-f14d-9aac-d5cef83b5b64@huawei.com>
On 12/20/22 00:28, Jason Yan wrote:
> On 2022/12/19 17:23, John Garry wrote:
>> On 16/12/2022 10:03, Xingui Yang wrote:
>>> If the ATA device fell off, call sas_ata_device_link_abort() directly and
>>> mark all outstanding QCs as failed and kick-off EH Immediately. This
>>> avoids
>>> having to wait for block layer timeouts.
>>>
>>> Signed-off-by: Xingui Yang <yangxingui@huawei.com>
>>> ---
>>> Changes to v1:
>>> - Use dev_is_sata() to check ATA device type
>>> drivers/scsi/libsas/sas_discover.c | 3 +++
>>> 1 file changed, 3 insertions(+)
>>>
>>> diff --git a/drivers/scsi/libsas/sas_discover.c
>>> b/drivers/scsi/libsas/sas_discover.c
>>> index d5bc1314c341..a12b65eb4a2a 100644
>>> --- a/drivers/scsi/libsas/sas_discover.c
>>> +++ b/drivers/scsi/libsas/sas_discover.c
>>> @@ -362,6 +362,9 @@ static void sas_destruct_ports(struct asd_sas_port
>>> *port)
>>> void sas_unregister_dev(struct asd_sas_port *port, struct
>>> domain_device *dev)
>>> {
>>> + if (test_bit(SAS_DEV_GONE, &dev->state) && dev_is_sata(dev))
>>> + sas_ata_device_link_abort(dev, false);
>>
>> Firstly, I think that there is a bug in sas_ata_device_link_abort() ->
>> ata_link_abort() code in that the host lock in not grabbed, as the
>> comment in ata_port_abort() mentions. Having said that, libsas had
>> already some dodgy host locking usage - specifically dropping the lock
>> for the queuing path (that's something else to be fixed up ... I think
>
> Taking big locks in queuing path is not a good idea. This will bring
> down performance.
With HDDs ? You will not see any difference (and SATA SSDs are not a thing
anymore, enough that we should worry too much. NVMe took over). And that
"big lock" is libata is really an integral part of the design. To remove
it, you will need to rewrite libata entirely...
>
>
>> that is due to queue command CB calling task_done() in some cases), but
>> I still think that sas_ata_device_link_abort() should be fixed (to grab
>> the host lock).
>
> For sas_ata_device_link_abort(), it should grab ap->lock.
Which is what libata code comments (mistakenly in many places) always
refer as host lock.
>
> Thanks,
> Jason
--
Damien Le Moal
Western Digital Research
next prev parent reply other threads:[~2022-12-19 22:59 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20221216100327.7386-1-yangxingui@huawei.com>
2022-12-19 9:23 ` [PATCH V2] scsi: libsas: Directly kick-off EH when ATA device fell off John Garry
2022-12-19 12:59 ` yangxingui
2022-12-19 14:53 ` John Garry
2022-12-20 2:34 ` yangxingui
2022-12-20 9:49 ` Jason Yan
2022-12-21 9:40 ` John Garry
2022-12-21 10:29 ` Jason Yan
2022-12-21 9:28 ` yangxingui
2022-12-19 15:28 ` Jason Yan
2022-12-19 15:55 ` John Garry
2022-12-19 23:00 ` Damien Le Moal
2022-12-20 8:43 ` John Garry
2022-12-19 22:59 ` Damien Le Moal [this message]
2022-12-20 2:39 ` Jason Yan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=234e04db-7539-07e4-a6b8-c6b05f78193d@opensource.wdc.com \
--to=damien.lemoal@opensource.wdc.com \
--cc=hare@suse.com \
--cc=hch@lst.de \
--cc=jejb@linux.ibm.com \
--cc=john.g.garry@oracle.com \
--cc=kangfenglong@huawei.com \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=linuxarm@huawei.com \
--cc=martin.petersen@oracle.com \
--cc=prime.zeng@hisilicon.com \
--cc=yanaijie@huawei.com \
--cc=yangxingui@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox