[dm-devel] Re: Some issues noticed in my testing.

Christophe Varoqui christophe.varoqui at free.fr
Tue Feb 8 21:55:45 UTC 2005


Caushik, Ramesh wrote:

>Hi Christophe,
>  
>
Hello,

>I noticed a failure in multipath-tools-0.4.2 when executing the
>following scenario.
>
>i) Run multipathd & multipath with 1 of 2 paths in the system available.
>ii)activate the other path.
>iii) run multipath again.
>
>Expect the newly inserted path to be incorporated into the original path
>groups. Does not happen. Traced it to a problem in the pgcmp2 function.
>Patch below should fix it.
>
I can't see this patch attached.
Can you resend it. (In diff -u format if possible)

> Also in step iii) above running multipath
>with a parameter (conf->dev) will not include the additional path into
>the particular mp because the select_alias function not called in the
>coalesce_paths function so the strncmp(mpp->alias,conf->dev,....) in
>main will always fail. Patch below should fix it. 
>
>  
>
Mr Goggin, EMC, already spotted this and a patch is present in my tree. 
Thanks.

>Also while testing with a modified scsi_debug driver (to expose multiple
>paths to the same device) noticed that sysfs vendor name for the
>scsi_debug device is "Linux   " which fails to match with a "Linux"
>vendor name in the conf name and so device specific settings are not
>picked up. Think it is a good idea to chomp off trailing whitespace from
>vendor and product names. See patches below.  Regards,
>
>  
>
Can you tell me if the following fits your needs here ?

--- multipath-tools-0.4.2/libmultipath/hwtable.c        2005-01-23 
14:48:05.830203168 -0800
+++ multipath-tools-0.4.3-pre1/libmultipath/hwtable.c   2005-02-08 
13:42:57.203660896 -0800
@@ -12,14 +12,18 @@
 extern struct hwentry *
 find_hw (vector hwtable, char * vendor, char * product)
 {
-       int i;
+       int i, vendor_len, product_len;
        struct hwentry * hwe;

+       vendor_len = strlen(vendor);
+       product_len = strlen(product);
+
        vector_foreach_slot (hwtable, hwe, i)
-               if (hwe->vendor && hwe->product &&
-                   strcmp(hwe->vendor, vendor) == 0 &&
+               if (hwe->vendor && vendor_len == strlen(hwe->vendor) &&
+                   strncmp(hwe->vendor, vendor, vendor_len) == 0 &&
+                   hwe->product && product_len == strlen(hwe->product) &&
                    (hwe->product[0] == '*' ||
-                       strcmp(hwe->product, product) == 0))
+                    strncmp(hwe->product, product, product_len) == 0))
                        return hwe;
        return NULL;
 }

Regards,
cvaroqui




More information about the dm-devel mailing list