On Tue, Oct 04, 2005 at 03:29:51PM +0530, Murthy, Narasimha Doraswamy (STSD) wrote: > > 1) Under all path failure condition or the device is removed from array > (using management station), IO continues if "queue_if_no_path" feature > is enabled. As all the requests are cached all the memory gets used out > for this. Can there be any mechanism where the all path failure is > detected and marked, devices can be suspended or removed after some time > (user configurable). By doing this the OS stalling can be avoided when > the LUN is in dead state for prolonged period of time. > Wouldn't it be adequate to solve this issue in the queue_if_no_path limiting framework that should be worked on (time-based, queue depth-based, both, ...?) After all, the admin should "multipath -f $sssu_wants_to_kill_me") before, shouldn't it ? Think of mounted FS, for example ... the admin *has* to do something on the system anyway. > > > 2) I am not able to give partial product ID string (substring) in > /etc/multipath.conf as DM expects complete product string. This > requirement is needed to cater different product id strings for same > product. The XP array has the ids based on the emulation type of each > LUN. With the current settings available in /etc/multipath.conf, the > only option is to have separate "device" structs mentioning about the > policies/features for each LUN. > Does this work for you ? --- 58814af76c619b85440d3853a8f97927e7c3aebe/libmultipath/config.c (mode:100644) +++ ef58245012d71b4dae8873898889f61c85ec41b8/libmultipath/config.c (mode:100644) @@ -1,6 +1,7 @@ #include <stdio.h> #include <string.h> +#include "regex.h" #include "memory.h" #include "util.h" #include "debug.h" @@ -19,11 +20,15 @@ { int i; struct hwentry * hwe; + regex_t vre, pre; vector_foreach_slot (hwtable, hwe, i) { - if (strcmp_chomp(hwe->vendor, vendor) == 0 && - (hwe->product[0] == '*' || - strcmp_chomp(hwe->product, product) == 0)) + if (regcomp(&vre, hwe->vendor, REG_EXTENDED|REG_NOSUB)) + return NULL; + if (regcomp(&pre, hwe->product, REG_EXTENDED|REG_NOSUB)) + return NULL; + if (!regexec(&vre, vendor, 0, NULL, 0) && + !regexec(&pre, product, 0, NULL, 0)) return hwe; } return NULL; Regards, cvaroqui -- dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel