Re: [PATCH] scsi: libsas: Directly kick-off EH when ATA device fell off

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 2022/12/16 11:53, Jason Yan wrote:
Hi Xingui,

On 2022/12/16 11:29, 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.


Why does ATA device need this special operation? SAS device does not have to wait for block layer timeouts?
Hi Jason,
Applications that depend on I/O return may be blocked for 30 seconds, and this can be optimized for SATA disks.

Different from SATA disks, I/Os on SAS disks can still be returned if they are quickly plugged in after the SAS disks fall off. So I'm not sure if this is appropriate for a sas disk.
BTW, I wish the sas disk did the same.

Thanks,
Xingui

Thanks,
Jason

Signed-off-by: Xingui Yang <yangxingui@xxxxxxxxxx>
---
  drivers/scsi/libsas/sas_discover.c | 5 +++++
  1 file changed, 5 insertions(+)

diff --git a/drivers/scsi/libsas/sas_discover.c b/drivers/scsi/libsas/sas_discover.c
index d5bc1314c341..bd22741daa99 100644
--- a/drivers/scsi/libsas/sas_discover.c
+++ b/drivers/scsi/libsas/sas_discover.c
@@ -362,6 +362,11 @@ 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->dev_type == SAS_SATA_DEV ||
+        (dev->tproto & SAS_PROTOCOL_STP)))
+        sas_ata_device_link_abort(dev, false);
+
      if (!test_bit(SAS_DEV_DESTROY, &dev->state) &&
          !list_empty(&dev->disco_list_node)) {
          /* this rphy never saw sas_rphy_add */

.



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux