diff options
author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2024-04-01 15:56:47 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2024-04-01 15:57:05 +0200 |
commit | 963e2e9597db54ff15205c5c0cde8331e0e734e4 (patch) | |
tree | 4b3e21aef24ab99f5cdca2aaba0d021d2ff268a2 /queue-5.4 | |
parent | e7cb18d23ec8ed96bcaa45bc2d80f08996251637 (diff) | |
download | stable-queue-963e2e9597db54ff15205c5c0cde8331e0e734e4.tar.gz |
drop libsas patch
Diffstat (limited to 'queue-5.4')
-rw-r--r-- | queue-5.4/scsi-libsas-fix-disk-not-being-scanned-in-after-being-removed.patch | 111 | ||||
-rw-r--r-- | queue-5.4/series | 1 |
2 files changed, 0 insertions, 112 deletions
diff --git a/queue-5.4/scsi-libsas-fix-disk-not-being-scanned-in-after-being-removed.patch b/queue-5.4/scsi-libsas-fix-disk-not-being-scanned-in-after-being-removed.patch deleted file mode 100644 index 84a5c020e2..0000000000 --- a/queue-5.4/scsi-libsas-fix-disk-not-being-scanned-in-after-being-removed.patch +++ /dev/null @@ -1,111 +0,0 @@ -From 8e68a458bcf5b5cb9c3624598bae28f08251601f Mon Sep 17 00:00:00 2001 -From: Xingui Yang <yangxingui@huawei.com> -Date: Thu, 7 Mar 2024 14:14:13 +0000 -Subject: scsi: libsas: Fix disk not being scanned in after being removed - -From: Xingui Yang <yangxingui@huawei.com> - -commit 8e68a458bcf5b5cb9c3624598bae28f08251601f upstream. - -As of commit d8649fc1c5e4 ("scsi: libsas: Do discovery on empty PHY to -update PHY info"), do discovery will send a new SMP_DISCOVER and update -phy->phy_change_count. We found that if the disk is reconnected and phy -change_count changes at this time, the disk scanning process will not be -triggered. - -Therefore, call sas_set_ex_phy() to update the PHY info with the results of -the last query. And because the previous phy info will be used when calling -sas_unregister_devs_sas_addr(), sas_unregister_devs_sas_addr() should be -called before sas_set_ex_phy(). - -Fixes: d8649fc1c5e4 ("scsi: libsas: Do discovery on empty PHY to update PHY info") -Signed-off-by: Xingui Yang <yangxingui@huawei.com> -Link: https://lore.kernel.org/r/20240307141413.48049-3-yangxingui@huawei.com -Reviewed-by: John Garry <john.g.garry@oracle.com> -Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> -Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> ---- - drivers/scsi/libsas/sas_expander.c | 32 ++++++++++++++++++++++---------- - 1 file changed, 22 insertions(+), 10 deletions(-) - ---- a/drivers/scsi/libsas/sas_expander.c -+++ b/drivers/scsi/libsas/sas_expander.c -@@ -1997,6 +1997,7 @@ static int sas_rediscover_dev(struct dom - struct expander_device *ex = &dev->ex_dev; - struct ex_phy *phy = &ex->ex_phy[phy_id]; - enum sas_device_type type = SAS_PHY_UNUSED; -+ struct smp_disc_resp *disc_resp; - u8 sas_addr[SAS_ADDR_SIZE]; - char msg[80] = ""; - int res; -@@ -2008,33 +2009,41 @@ static int sas_rediscover_dev(struct dom - SAS_ADDR(dev->sas_addr), phy_id, msg); - - memset(sas_addr, 0, SAS_ADDR_SIZE); -- res = sas_get_phy_attached_dev(dev, phy_id, sas_addr, &type); -+ disc_resp = alloc_smp_resp(DISCOVER_RESP_SIZE); -+ if (!disc_resp) -+ return -ENOMEM; -+ -+ res = sas_get_phy_discover(dev, phy_id, disc_resp); - switch (res) { - case SMP_RESP_NO_PHY: - phy->phy_state = PHY_NOT_PRESENT; - sas_unregister_devs_sas_addr(dev, phy_id, last); -- return res; -+ goto out_free_resp; - case SMP_RESP_PHY_VACANT: - phy->phy_state = PHY_VACANT; - sas_unregister_devs_sas_addr(dev, phy_id, last); -- return res; -+ goto out_free_resp; - case SMP_RESP_FUNC_ACC: - break; - case -ECOMM: - break; - default: -- return res; -+ goto out_free_resp; - } - -+ if (res == 0) -+ sas_get_sas_addr_and_dev_type(disc_resp, sas_addr, &type); -+ - if ((SAS_ADDR(sas_addr) == 0) || (res == -ECOMM)) { - phy->phy_state = PHY_EMPTY; - sas_unregister_devs_sas_addr(dev, phy_id, last); - /* -- * Even though the PHY is empty, for convenience we discover -- * the PHY to update the PHY info, like negotiated linkrate. -+ * Even though the PHY is empty, for convenience we update -+ * the PHY info, like negotiated linkrate. - */ -- sas_ex_phy_discover(dev, phy_id); -- return res; -+ if (res == 0) -+ sas_set_ex_phy(dev, phy_id, disc_resp); -+ goto out_free_resp; - } else if (SAS_ADDR(sas_addr) == SAS_ADDR(phy->attached_sas_addr) && - dev_type_flutter(type, phy->attached_dev_type)) { - struct domain_device *ata_dev = sas_ex_to_ata(dev, phy_id); -@@ -2046,7 +2055,7 @@ static int sas_rediscover_dev(struct dom - action = ", needs recovery"; - pr_debug("ex %016llx phy%02d broadcast flutter%s\n", - SAS_ADDR(dev->sas_addr), phy_id, action); -- return res; -+ goto out_free_resp; - } - - /* we always have to delete the old device when we went here */ -@@ -2055,7 +2064,10 @@ static int sas_rediscover_dev(struct dom - SAS_ADDR(phy->attached_sas_addr)); - sas_unregister_devs_sas_addr(dev, phy_id, last); - -- return sas_discover_new(dev, phy_id); -+ res = sas_discover_new(dev, phy_id); -+out_free_resp: -+ kfree(disc_resp); -+ return res; - } - - /** diff --git a/queue-5.4/series b/queue-5.4/series index 6c9ce6ac78..fa926984d9 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -125,4 +125,3 @@ usb-udc-remove-warning-when-queue-disabled-ep.patch scsi-qla2xxx-fix-command-flush-on-cable-pull.patch x86-cpu-enable-stibp-on-amd-if-automatic-ibrs-is-enabled.patch scsi-lpfc-correct-size-for-wqe-for-memset.patch -scsi-libsas-fix-disk-not-being-scanned-in-after-being-removed.patch |