[PATCH v10 0/2] libsas: rediscover improvements for linkrate/sas_addr

Xingui Yang <[email protected]>
Newsgroups org.kernel.vger.linux-scsi,org.kernel.vger.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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.