]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-client.git/commitdiff
scsi: ses: Fix devices attaching to different hosts
authorTomas Henzl <thenzl@redhat.com>
Tue, 10 Feb 2026 19:18:50 +0000 (20:18 +0100)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 18 Feb 2026 02:26:46 +0000 (21:26 -0500)
On a multipath SAS system some devices don't end up with correct symlinks
from the SCSI device to its enclosure. Some devices even have enclosure
links pointing to enclosures attached to different SCSI hosts.

ses_match_to_enclosure() calls enclosure_for_each_device() which iterates
over all enclosures on the system, not just enclosures attached to the
current SCSI host.

Replace the iteration with a direct call to ses_enclosure_find_by_addr().

Reviewed-by: David Jeffery <djeffery@redhat.com>
Signed-off-by: Tomas Henzl <thenzl@redhat.com>
Link: https://patch.msgid.link/20260210191850.36784-1-thenzl@redhat.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/ses.c

index 789b170da6527c2a0cdf3f735e537eb0945862b7..98a7367d2f20ed303aa9d50eaa1971431fdb30f2 100644 (file)
@@ -528,9 +528,8 @@ struct efd {
 };
 
 static int ses_enclosure_find_by_addr(struct enclosure_device *edev,
-                                     void *data)
+                                     struct efd *efd)
 {
-       struct efd *efd = data;
        int i;
        struct ses_component *scomp;
 
@@ -683,7 +682,7 @@ static void ses_match_to_enclosure(struct enclosure_device *edev,
        if (efd.addr) {
                efd.dev = &sdev->sdev_gendev;
 
-               enclosure_for_each_device(ses_enclosure_find_by_addr, &efd);
+               ses_enclosure_find_by_addr(edev, &efd);
        }
 }