[PATCH v10 0/2] libsas: rediscover improvements for linkrate/sas_addr
Xingui Yang <[email protected]> Tue, 11 Aug 2026 12:03:32 +0800
| Newsgroups | gmane.linux.scsi,gmane.linux.kernel |
|---|---|
| Message-ID | <[email protected]> |
When a device attached to an expander phy experiences a linkrate change (e.g., due to cable reconnection or negotiation), the current code in sas_rediscover_dev() treats it as "broadcast flutter" and takes no action if the SAS address and device type remain unchanged. This series is based on John Garry's suggestion [1] to check the linkrate and mark the device as gone and rediscover when flutter occurs, replacing the previous v2 patch series that used lldd callbacks. The previous v2 approach added lldd_dev_info_update callback which John commented as "seem fragile and too specialized" [2]. This series adopts a simpler approach that directly checks linkrate/sas_addr changes in sas_rediscover_dev() and triggers rediscovery using libsas's standard async discovery pattern. This aligns with Jason Yan's earlier work [3] which was verified to solve the linkrate change issue. Additionally, per the discussion in v3 [4], the existing replace code path also suffers from the same sysfs duplication issue: sas_unregister_devs_sas_addr() only marks the device as gone, but the actual sysfs cleanup happens later in sas_destruct_devices(). Calling sas_discover_new() immediately after unregister causes sysfs_warn_dup() errors. This series also optimizes the replace path to use the async pattern, ensuring proper ordering for both flutter and replace cases. Changes from v9: - Rename sas_ex_to_dev() to sas_ex_phy_to_dev() per John's review [5], for consistency with sas_ex_phy_discover() and other phy-related helpers - Remove the defensive NULL check for ex_dev per John's review [5], as no current caller passes a NULL expander device. The check was added in v7 based on an automated Sashiko AI review suggestion which may contain noise Full changelog at [6]. [1] https://lore.kernel.org/linux-scsi/[email protected]/ [2] https://lore.kernel.org/linux-scsi/[email protected]/ [3] https://lore.kernel.org/linux-scsi/[email protected]/ [4] https://lore.kernel.org/linux-scsi/[email protected]/ [5] https://lore.kernel.org/linux-scsi/[email protected]/ [6] https://lore.kernel.org/linux-scsi/[email protected]/ Xingui Yang (2): scsi: libsas: Add sas_ex_phy_to_dev() helper scsi: libsas: Add linkrate and sas_addr change detection in rediscover drivers/scsi/libsas/sas_expander.c | 96 ++++++++++++++++++++++++------ drivers/scsi/libsas/sas_internal.h | 1 + 2 files changed, 79 insertions(+), 18 deletions(-) -- 2.43.0