Re: [PATCH v2 1/3] libmultipath: use 3rd digit as transport_id for expanders

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

 



On Tue, 2021-02-02 at 10:43 +0100, mwilck@xxxxxxxx wrote:
> From: Martin Wilck <mwilck@xxxxxxxx>
> 
> On SAS expanders, node id's have 3 digits. sysfs paths look like
> this:
> 
> /sys/devices/pci0000:80/0000:80:02.0/0000:8b:00.0/0000:8c:09.0/0000:8
> f:00.0/host9/port-9:0/expander-9:0/port-9:0:13/expander-9:1/port-
> 9:1:12/expander-9:2/port-9:2:4/end_device-
> 9:2:4/target9:0:29/9:0:29:0/block/sdac
> 
> In that case, we should use the last digit as transport id.
> 
> Signed-off-by: Martin Wilck <mwilck@xxxxxxxx>

Sorry, I forgot:

v1 -> v2:
   avoid endless loop if udev_device_get_sysname() returns NULL
   (Ben Marzinski)


> ---
>  libmultipath/discovery.c | 13 ++++++++++---
>  1 file changed, 10 insertions(+), 3 deletions(-)
> 
> diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c
> index e818585..6d74cc0 100644
> --- a/libmultipath/discovery.c
> +++ b/libmultipath/discovery.c
> @@ -358,10 +358,17 @@ sysfs_get_tgt_nodename(struct path *pp, char
> *node)
>         if (value) {
>                 tgtdev = udev_device_get_parent(parent);
>                 while (tgtdev) {
> +                       char c;
> +
>                         tgtname = udev_device_get_sysname(tgtdev);
> -                       if (tgtname && sscanf(tgtname, "end_device-
> %d:%d",
> -                                  &host, &tgtid) == 2)
> -                               break;
> +                       if (tgtname) {
> +                               if (sscanf(tgtname, "end_device-
> %d:%d:%d%c",
> +                                          &host, &channel, &tgtid,
> &c) == 3)
> +                                       break;
> +                               if (sscanf(tgtname, "end_device-
> %d:%d%c",
> +                                          &host, &tgtid, &c) == 2)
> +                                       break;
> +                       }
>                         tgtdev = udev_device_get_parent(tgtdev);
>                         tgtid = -1;
>                 }



--
dm-devel mailing list
dm-devel@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/dm-devel





[Index of Archives]     [DM Crypt]     [Fedora Desktop]     [ATA RAID]     [Fedora Marketing]     [Fedora Packaging]     [Fedora SELinux]     [Yosemite Discussion]     [KDE Users]     [Fedora Docs]

  Powered by Linux