All of lore.kernel.org
 help / color / mirror / Atom feed
From: "web999@bluehatlinux.com" <web999@bluehatlinux.com>
To: dm-devel@redhat.com
Subject: user_friendly_filter feature submission
Date: Wed, 18 Jun 2008 15:44:38 -0400	[thread overview]
Message-ID: <485965A6.606@bluehatlinux.com> (raw)

Attached is my submission for a feature update to the linux multipath. I 
am trying to add a feature that allows dynamic user friendly names. I 
feel this will make multipath, cluster friendly, in addition to making 
multipath more malleable.
Right now the user has two dynamic options either use a wwid like 
120030a80045bc60000007de800000293 that will be the same on all nodes of 
a cluster or a name like mpathX where X might deviate on different nodes 
of a cluster.
In practice the best practice is to static name all lun names in 
/etc/multipath.conf on all nodes. On large clusters with small LUNS this 
can easily run into thousands of lines per node.
I propose a feature that allows the user to supply a sed script that 
will auto name the LUNS so for example...
    user_friendly_names     yes
120030a80045bc60000007de800000292  -> /dev/mpath/mpath0
120030a80045bc60000007de800000293  -> /dev/mpath/mpath1
while...
On a HP XP12000 class SAN the last 4 digits correspond to CU and LUN
    user_friendly_names     yes
    user_friendly_filter    "/bin/sed 
s|^.\{29\}\(.\{2\}\)\(.\{2\}\)|lun_\1_\2|"
120030a80045bc60000007de800000292  -> /dev/mpath/lun_02_92
120030a80045bc60000007de800000293  -> /dev/mpath/lun_02_93

so for example with one line a Admin allows a DBA to see what lun 
corresponds to what disk array.
Ex....
lun_01_01
lun_01_02
are all on one "parity group"
lun_02_01
lun_02_02
are on another.
If this patch is succesful I would considering working on a module 
system so that every SAN has a unique naming scheme.
By default a XP12000 would automatically name its luns
XP_123_01_02
where 123 is a unique identifier for the san
while plugin in a EMC might give a name like
EMC_123_0001
But in any case the names will be the same on all nodes as long as the 
filter is consistent.

Attached is a diff against redhat's source code 
multipath-tools-0.4.7.rhel5.10 as that is the only code base I have 
available for testing.

If a different format is needed please let me know.

David Davidson
web999.at.bluehatlinux.com

diff -U 3 -H -d -r -N -x .cproject -x .project -- 
root/workspace/multipath-tools-0.4.7/Multipath-usage.txt 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/Multipath-usage.txt
--- root/workspace/multipath-tools-0.4.7/Multipath-usage.txt   
 2008-06-12 19:01:25.000000000 -0400
+++ 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/Multipath-usage.txt   
 2006-06-06 14:32:43.000000000 -0400
@@ -164,8 +164,7 @@
 
     NOTE: While the alias in guaranteed to be unique on a node, it
           is not guaranteed to be the same on all nodes using the
-          multipath device. Also, it may change. Setting 
user_friendly_filter
-          will make the device the same if properly set.
+          multipath device. Also, it may change.
 
 WWID:
     The WWID (World Wide Identifier) is an identifier for the
Binary files root/workspace/multipath-tools-0.4.7/cciss_id/cciss_id and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/cciss_id/cciss_id 
differ
Binary files root/workspace/multipath-tools-0.4.7/cciss_id/cciss_id.o 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/cciss_id/cciss_id.o 
differ
Binary files root/workspace/multipath-tools-0.4.7/kpartx/bsd.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/kpartx/bsd.o differ
Binary files root/workspace/multipath-tools-0.4.7/kpartx/crc32.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/kpartx/crc32.o differ
Binary files root/workspace/multipath-tools-0.4.7/kpartx/dasd.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/kpartx/dasd.o differ
Binary files root/workspace/multipath-tools-0.4.7/kpartx/devmapper.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/kpartx/devmapper.o 
differ
Binary files root/workspace/multipath-tools-0.4.7/kpartx/dos.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/kpartx/dos.o differ
Binary files root/workspace/multipath-tools-0.4.7/kpartx/gpt.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/kpartx/gpt.o differ
Binary files root/workspace/multipath-tools-0.4.7/kpartx/kpartx and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/kpartx/kpartx differ
Binary files root/workspace/multipath-tools-0.4.7/kpartx/kpartx.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/kpartx/kpartx.o differ
Binary files root/workspace/multipath-tools-0.4.7/kpartx/kpartx.static 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/kpartx/kpartx.static 
differ
Binary files root/workspace/multipath-tools-0.4.7/kpartx/lopart.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/kpartx/lopart.o differ
Binary files root/workspace/multipath-tools-0.4.7/kpartx/mac.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/kpartx/mac.o differ
Binary files root/workspace/multipath-tools-0.4.7/kpartx/solaris.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/kpartx/solaris.o 
differ
Binary files root/workspace/multipath-tools-0.4.7/kpartx/unixware.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/kpartx/unixware.o 
differ
Binary files root/workspace/multipath-tools-0.4.7/kpartx/xstrncpy.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/kpartx/xstrncpy.o 
differ
Binary files 
root/workspace/multipath-tools-0.4.7/libcheckers/cciss_tur.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libcheckers/cciss_tur.o 
differ
Binary files root/workspace/multipath-tools-0.4.7/libcheckers/checkers.o 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libcheckers/checkers.o 
differ
Binary files root/workspace/multipath-tools-0.4.7/libcheckers/directio.o 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libcheckers/directio.o 
differ
Binary files 
root/workspace/multipath-tools-0.4.7/libcheckers/emc_clariion.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libcheckers/emc_clariion.o 
differ
Binary files root/workspace/multipath-tools-0.4.7/libcheckers/hp_sw.o 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libcheckers/hp_sw.o 
differ
Binary files 
root/workspace/multipath-tools-0.4.7/libcheckers/libcheckers-glibc.a and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libcheckers/libcheckers-glibc.a 
differ
Binary files root/workspace/multipath-tools-0.4.7/libcheckers/rdac.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libcheckers/rdac.o 
differ
Binary files 
root/workspace/multipath-tools-0.4.7/libcheckers/readsector0.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libcheckers/readsector0.o 
differ
Binary files root/workspace/multipath-tools-0.4.7/libcheckers/tur.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libcheckers/tur.o 
differ
diff -U 3 -H -d -r -N -x .cproject -x .project -- 
root/workspace/multipath-tools-0.4.7/libmultipath/alias.c 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/alias.c
--- root/workspace/multipath-tools-0.4.7/libmultipath/alias.c   
 2008-06-12 18:47:41.000000000 -0400
+++ 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/alias.c   
 2007-06-11 19:24:09.000000000 -0400
@@ -1,7 +1,6 @@
 /*
  * Copyright (c) 2005 Christophe Varoqui
  * Copyright (c) 2005 Benjamin Marzinski, Redhat
- * Copyright (c) 2008 David Davidson
  */
 #include <stdlib.h>
 #include <sys/types.h>
@@ -17,8 +16,6 @@
 #include "debug.h"
 #include "uxsock.h"
 #include "alias.h"
-#include "callout.h"
-
 
 
 /*
@@ -182,21 +179,9 @@
     return -1;
 }
 
-/*if this wwid is in the binding file set it to alias otherwise
-     * return the last used X in mpathX.*/
 
-/* By:        Unknown
- * Modified:David Davidson    - 06/12/2008
- * Purpose:    Scans the binding file. If the specified wwid is in it 
set *map_alias
- *             to the alias. Otherwise leave *map_alias Null and return 
the last
- *             used X in mpathX.
- * Input:    filtered_name - the filter that is going to be used in 
deciding a name.
- *             map_wwid - the wwid to use.
- * Output:    map_alias - Only if this wwid was in the binding file.
- *             returns the last used X by a mpathX.
- */
 static int
-lookup_binding(FILE *f, char *map_wwid, char **map_alias,char 
*filtered_name)
+lookup_binding(FILE *f, char *map_wwid, char **map_alias)
 {
     char buf[LINE_MAX];
     unsigned int line_nr = 0;
@@ -208,7 +193,6 @@
         char *c, *alias, *wwid;
         int curr_id;
 
-        /*skip all header info*/
         line_nr++;
         c = strpbrk(buf, "#\n\r");
         if (c)
@@ -216,13 +200,8 @@
         alias = strtok(buf, " \t");
         if (!alias) /* blank line */
             continue;
-        
-        /* Keep track of the highest used X in mpathX incase this is a 
simple
-         * userfreindly name*/
-        if((strcmp(filtered_name,"mpath") == 0)
-                && ((sscanf(alias, "mpath%d", &curr_id) == 1) && 
(curr_id >= id))) {
+        if (sscanf(alias, "mpath%d", &curr_id) == 1 && curr_id >= id)
             id = curr_id + 1;
-        }
         wwid = strtok(NULL, " \t");
         if (!wwid){
             condlog(3,
@@ -230,7 +209,6 @@
                 line_nr);
             continue;
         }
-        /*if the wwid was found return the associated alias.*/
         if (strcmp(wwid, map_wwid) == 0){
             condlog(3, "Found matching wwid [%s] in bindings file."
                 "\nSetting alias to %s", wwid, alias);
@@ -288,17 +266,8 @@
     return id;
 }    
 
-/* By:        Unknown
- * Modified    David Davidson    - 06/12/2008
- * Purpose:    
- * Input:    *wwid - the wwid to reserve.
- *             *filtered_name - the alias to use.
- *             id    - the last use X in mpathX, only relevent if 
filtered_name is mpath
- * Output:    returns the user friendly alias.
- */
-
 static char *
-allocate_binding(int fd, char *wwid, int id,char *filtered_name)
+allocate_binding(int fd, char *wwid, int id)
 {
     char buf[LINE_MAX];
     off_t offset;
@@ -309,12 +278,7 @@
         return NULL;
     }
     
-    /* digit appended only if alias is mpath, all other aliases must be 
unique*/
-    if (strcmp(filtered_name,"mpath") == 0){
-        snprintf(buf, LINE_MAX, "mpath%d %s\n", id, wwid);
-    } else {
-        snprintf(buf, LINE_MAX, "%s %s\n", filtered_name, wwid);
-    }
+    snprintf(buf, LINE_MAX, "mpath%d %s\n", id, wwid);
     buf[LINE_MAX - 1] = '\0';
 
     offset = lseek(fd, 0, SEEK_END);
@@ -342,29 +306,14 @@
     return alias;
 }        
 
-/* By:        Unknown
- * Modified    David Davidson    - 06/12/2008
- * Purpose:    Format a user friendly alias for a specified wwid.
- *             Will check and see if the wwid was already allocated
- *             in the binding file and if so use that above all else.
- *             If not wwid will asign alias depending on whether a filter
- *             is set and will add the new alias to the binding file.
- * Input:    *wwid - the wwid to base the name on.
- *             *filter - the user_friendly_filter otherwise NULL.
- *             *file    - path of binding file.
- * Output:    returns the user friendly alias.
- */
 char *
-get_user_friendly_alias(char *wwid, char *file,char *filter)
+get_user_friendly_alias(char *wwid, char *file)
 {
-    char upstream[256];
-    char out[256];
     char *alias;
     int fd, scan_fd, id;
     FILE *f;
     int can_write;
 
-    /* Open the binding file and run all checks. */
     if (!wwid || *wwid == '\0') {
         condlog(3, "Cannot find binding for empty WWID");
         return NULL;
@@ -390,34 +339,18 @@
         close(fd);
         return NULL;
     }
-    
-    /* Decide what kind of name is going to be used either a filtered 
output
-     * or mpathX if no filter was set.*/
-    if(filter != NULL){
-        strcpy(upstream, "/bin/echo ");
-        strcat(upstream,wwid);
-        execute_piped_program(upstream, 255, filter, 255, out);    
-    }else{
-        strcpy(out, "mpath");
-    }    
-    
-    
-    /* check for wwid */
-    id = lookup_binding(f, wwid, &alias, out);
-    
-    /* If there was a problem, returning NULL will set the alias to the 
wwid*/
+
+    id = lookup_binding(f, wwid, &alias);
     if (id < 0) {
         fclose(f);
         close(scan_fd);
         close(fd);
         return NULL;
-    }    
-    
-    /* if wwid wasn't in the binding file write the new one*/
-    if (!alias && can_write){        
-        alias = allocate_binding(fd, wwid, id,out);        
     }
-    
+
+    if (!alias && can_write)
+        alias = allocate_binding(fd, wwid, id);
+
     fclose(f);
     close(scan_fd);
     close(fd);
diff -U 3 -H -d -r -N -x .cproject -x .project -- 
root/workspace/multipath-tools-0.4.7/libmultipath/alias.h 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/alias.h
--- root/workspace/multipath-tools-0.4.7/libmultipath/alias.h   
 2008-06-03 16:45:13.000000000 -0400
+++ 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/alias.h   
 2006-06-06 14:32:43.000000000 -0400
@@ -8,6 +8,5 @@
 "# alias wwid\n" \
 "#\n"
 
-char *get_user_friendly_alias(char *wwid, char *file,char *filter);
+char *get_user_friendly_alias(char *wwid, char *file);
 char *get_user_friendly_wwid(char *alias, char *file);
-
Binary files root/workspace/multipath-tools-0.4.7/libmultipath/alias.o 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/alias.o 
differ
Binary files 
root/workspace/multipath-tools-0.4.7/libmultipath/blacklist.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/blacklist.o 
differ
diff -U 3 -H -d -r -N -x .cproject -x .project -- 
root/workspace/multipath-tools-0.4.7/libmultipath/callout.c 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/callout.c
--- root/workspace/multipath-tools-0.4.7/libmultipath/callout.c   
 2008-06-12 18:48:54.000000000 -0400
+++ 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/callout.c   
 2006-06-06 14:32:43.000000000 -0400
@@ -3,7 +3,6 @@
  *
  * Copyrights of the source file apply
  * Copyright (c) 2004 Christophe Varoqui
- * Copyright (c) 2008 David Davidson
  */
 #include <stdio.h>
 #include <sys/stat.h>
@@ -19,7 +18,6 @@
 #include "vector.h"
 #include "structs.h"
 #include "debug.h"
-#include "callout.h"
 
 #define PROGRAM_SIZE    100
 #define FIELD_PROGRAM
@@ -30,167 +28,94 @@
     strncpy(to, from, sizeof(to)-1); \
 } while (0)
 
-/* By:            Christophe Varoqui        
- * Modified:    David Davidson    - 06/12/2008
- * Purpose:        To execute a program at the system shell.
- * Input:        *path containing the command to be executed
- * Output:        *value containing the output of the command.
- *                 0 for success -1 if unsuccessful
- */
-int execute_program(char *path, char *value, int len){
-    // just pass it to the downstream of the pipe
-    return execute_piped_program(NULL, 0, path, len, value);    
-}
-
-/* By:            David Davidson    - 06/12/2008
- * Purpose:        To execute a program at the system shell.
- *                 We create a double piped set of child proccesses
- *                 that pass data one to aother and then returns the
- *                 final data to us.  
- * Input:        *upstr_cmd and *downstr_cmd containing both commands
- *                 so "echo hi | cat" would have *upstr_cmd set to echo hi
- *                 and *downstr_cmd set to cat
- * Output:        *value containing the output of the command.
- *                 0 for success -1 if unsuccessful
- *          ----
- *          |P1|
- *          ----
- *              \
- *               ---------
- *                       |
- *   1|pipe1|0   1|pipe2|0
- *    \      \   |      
- *      \     |  |
- *    ----    ----
- *    |P2|    |P3|
- *    ----    ----
- */
-int execute_piped_program(char *upstr_cmd, int upstr_len, char 
*downstr_cmd, int downstr_len, char *value) {
+int execute_program(char *path, char *value, int len)
+{
     int retval;
+    int count;
     int status;
-    char *upstr_argv[PROGRAM_SIZE];
-    char *downstr_argv[PROGRAM_SIZE];
-    int pipefd1[2];
-    int pipefd2[2];
+    int fds[2];
+    pid_t pid;
+    char *pos;
+    char arg[PROGRAM_SIZE];
+    char *argv[sizeof(arg) / 2];
+    int i;
 
-    //create both pipes
-    //pipe 1 used to pass output of upstream to down stream
-    if (pipe(pipefd1) == -1) {
-        perror("Error in pipe");
-        exit(1);
-    }
-    //pipe 2 returns the down stream to the calling program....us
-    if (pipe(pipefd2) == -1) {
-        perror("Error in pipe");
-        exit(1);
-    }
-    
-    
-    // Create the downstream process and connect its standard input to 
the pipe
-    if (fork() == 0) {
-        format_command(downstr_argv, downstr_cmd);
-        dup2(pipefd1[0], 0);
-        close(pipefd1[1]);
-        dup2(pipefd2[1], 1);
-        close(pipefd2[0]);        
-        execv(downstr_argv[0], downstr_argv);
-        perror("Error in downstream");//should never get here. If we do 
error.
-        return -1;
+    i = 0;
+
+    if (strchr(path, ' ')) {
+        strfieldcpy(arg, path);
+        pos = arg;
+        while (pos != NULL) {
+            if (pos[0] == '\'') {
+                /* don't separate if in apostrophes */
+                pos++;
+                argv[i] = strsep(&pos, "\'");
+                while (pos[0] == ' ')
+                    pos++;
+            } else {
+                argv[i] = strsep(&pos, " ");
+            }
+            i++;
+        }
+    } else {
+        argv[i++] = path;
     }
-    
-    // Create the upstream process and connect its standard output to 
the pipe
-    // Downstream must be used. Upstream is optional.
-    if ((upstr_len !=0) && (fork() == 0)) {
-        format_command(upstr_argv, upstr_cmd);
-        dup2(pipefd1[1], 1);
-        close(pipefd1[0]);
-        close(pipefd2[0]);
-        close(pipefd2[1]);
-        execv(upstr_argv[0], upstr_argv);//should never get here. If we 
do error.        
-        perror("Error in upstream");
+    argv[i] =  NULL;
+
+    retval = pipe(fds);
+
+    if (retval != 0)
         return -1;
-    }        
-    
-    //close the unused stream.
-    close(pipefd2[1]);
-    close(pipefd1[0]);
-    close(pipefd1[1]);
-    wait(&status);
-    
-    retval = return_output(value,255,pipefd2[0]);
-    
-    if (!WIFEXITED(status) || (WEXITSTATUS(status) != 0))
-                retval = -1;
-    return retval;
-}
 
-/* By:        Christophe Varoqui        
- * Modified:David Davidson    - 06/12/2008
- * Purpose:    Copies the data from a pipes out put to a
- *             character array that can be returned..
- * Input:    a pipe from calling procces accessed using read
- * Output:    *value containing the output of the command.
- *             0 for success -1 if unsuccessful
- */
-int return_output(char *value, int len,int fds){
-    int retval;
-    int count;
-    int i;
-            retval = 0;
-            i = 0;
-            while (1) {
-                count = read(fds, value + i, len - i-1);
-                if (count <= 0)
-                    break;
 
-                i += count;
-                if (i >= len-1) {
-                    retval = -1;
-                    break;
-                }
-            }
-            
-            
+    pid = fork();
 
-            if (count < 0)
-                retval = -1;
+    switch(pid) {
+    case 0:
+        /* child */
+        close(STDOUT_FILENO);
 
-            if (i > 0 && value[i-1] == '\n')
-                i--;
-            value[i] = '\0';
-    
-            return retval;
-}
+        /* dup write side of pipe to STDOUT */
+        dup(fds[1]);
 
-/* By:        Christophe Varoqui        
- * Modified:David Davidson    - 06/12/2008
- * Purpose:    formats a string passed as path in to a array
- *             that can be used by the execv() function.
- * Input:    *path containing stirng to run (ex "/bin/echo hi")
- * Output:    * argv[] containing aray of args (ex "'/bin/echo' 'hi'")
- */
-void format_command(char * argv[], char *path){    
-    int i;
+        retval = execv(argv[0], argv);
 
-    i = 0;
-    if (strchr(path, ' ')) {        
-        while (path != NULL) {
-            if (path[0] == '\'') {
-                // don't separate if in apostrophes
-                path++;
-                argv[i] = strsep(&path, "\'");
-                while (path[0] == ' ')
-                    path++;
-            } else {
-                argv[i] = strsep(&path, " ");
+        exit(-1);
+    case -1:
+        return -1;
+    default:
+        /* parent reads from fds[0] */
+        close(fds[1]);
+        retval = 0;
+        i = 0;
+        while (1) {
+            count = read(fds[0], value + i, len - i-1);
+            if (count <= 0)
+                break;
+
+            i += count;
+            if (i >= len-1) {
+                retval = -1;
+                break;
             }
-            i++;
         }
-    } else {
-        argv[i++] = path;
+
+        if (count < 0)
+            retval = -1;
+
+        if (i > 0 && value[i-1] == '\n')
+            i--;
+        value[i] = '\0';
+
+        wait(&status);
+        close(fds[0]);
+
+        if (!WIFEXITED(status) || (WEXITSTATUS(status) != 0))
+            retval = -1;
     }
-    argv[i] = NULL;
+    return retval;
 }
+
 extern int
 apply_format (char * string, char * cmd, struct path * pp)
 {
diff -U 3 -H -d -r -N -x .cproject -x .project -- 
root/workspace/multipath-tools-0.4.7/libmultipath/callout.h 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/callout.h
--- root/workspace/multipath-tools-0.4.7/libmultipath/callout.h   
 2008-06-12 17:12:14.000000000 -0400
+++ 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/callout.h   
 2006-06-06 14:32:43.000000000 -0400
@@ -2,9 +2,6 @@
 #define _CALLOUT_H
 
 int execute_program(char *, char *, int);
-int execute_piped_program(char *, int , char *, int , char *);
-void format_command(char **, char * );
-int return_output(char *, int, int);
-int apply_format(char *, char *, struct path *);
+int apply_format (char *, char *, struct path *);
 
 #endif /* _CALLOUT_H */
Binary files root/workspace/multipath-tools-0.4.7/libmultipath/callout.o 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/callout.o 
differ
diff -U 3 -H -d -r -N -x .cproject -x .project -- 
root/workspace/multipath-tools-0.4.7/libmultipath/config.h 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/config.h
--- root/workspace/multipath-tools-0.4.7/libmultipath/config.h   
 2008-05-29 15:15:08.000000000 -0400
+++ 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/config.h   
 2008-01-14 20:34:36.000000000 -0500
@@ -73,7 +73,6 @@
     char * features;
     char * hwhandler;
     char * bindings_file;
-    char * name_filter;
 
     vector keywords;
     vector mptable;
Binary files root/workspace/multipath-tools-0.4.7/libmultipath/config.o 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/config.o 
differ
Binary files 
root/workspace/multipath-tools-0.4.7/libmultipath/configure.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/configure.o 
differ
Binary files root/workspace/multipath-tools-0.4.7/libmultipath/debug.o 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/debug.o 
differ
diff -U 3 -H -d -r -N -x .cproject -x .project -- 
root/workspace/multipath-tools-0.4.7/libmultipath/defaults.h 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/defaults.h
--- root/workspace/multipath-tools-0.4.7/libmultipath/defaults.h   
 2008-06-12 16:22:26.000000000 -0400
+++ 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/defaults.h   
 2006-06-06 14:32:43.000000000 -0400
@@ -1,5 +1,4 @@
 #define DEFAULT_GETUID        "/sbin/scsi_id -g -u -s /block/%n"
-#define DEFAULT_NAME_FILTER    "/bin/cat"
 #define DEFAULT_UDEVDIR        "/dev"
 #define DEFAULT_SELECTOR    "round-robin 0"
 #define DEFAULT_FEATURES    "0"
Binary files 
root/workspace/multipath-tools-0.4.7/libmultipath/defaults.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/defaults.o 
differ
Binary files 
root/workspace/multipath-tools-0.4.7/libmultipath/devmapper.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/devmapper.o 
differ
diff -U 3 -H -d -r -N -x .cproject -x .project -- 
root/workspace/multipath-tools-0.4.7/libmultipath/dict.c 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/dict.c
--- root/workspace/multipath-tools-0.4.7/libmultipath/dict.c   
 2008-06-12 18:49:37.000000000 -0400
+++ 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/dict.c   
 2008-01-14 20:34:36.000000000 -0500
@@ -3,7 +3,6 @@
  * Copyright (c) 2004, 2005, 2006  Christophe Varoqui
  * Copyright (c) 2005 Benjamin Marzinski, Redhat
  * Copyright (c) 2005 Kiyoshi Ueda, NEC
- * Copyright (c) 2008 David Davidson
  */
 #include <checkers.h>
 
@@ -268,23 +267,6 @@
     FREE(buff);
     return 0;
 }
-/* By:        David Davidson    - 06/12/2008
- * Purpose:    To set the global config structures member name_filter to
- *             a command line specified by the user_friendly_filter token
- *             in the config file (/etc/multipath.conf)
- * Output:    0 if successful 1 if unsuccessful.    
- */
-
-static int
-names_filter(vector strvec)
-{
-    conf->name_filter = set_value(strvec);
-
-        if (!conf->name_filter)
-            return 1;
-        
-        return push_callout(conf->name_filter);    
-}
 
 static int
 bindings_file_handler(vector strvec)
@@ -1550,24 +1532,6 @@
     return snprintf(buff, len, "yes");
 }
 
-/* By:        David Davidson    - 06/12/2008
- * Purpose:    To check whether the user specified a value for 
user_friendly_filter
- *             in the config file.
- * Output:    0 if no value was specified or value equals the one 
specified in default.h
- *             char * buff containing the value otherwise.
- */
-static int
-snprint_def_names_filter (char * buff, int len, void * data)
-{
-    if (!conf->name_filter)
-            return 0;
-    
-    if ((strlen(conf->name_filter) == strlen( DEFAULT_NAME_FILTER )) &&
-            (strcmp(conf->name_filter, DEFAULT_NAME_FILTER) != 0))
-            return 0;
-    
-    return snprintf(buff, len, "%s", conf->name_filter);
-}
 static int
 snprint_def_bindings_file (char * buff, int len, void * data)
 {
@@ -1625,7 +1589,6 @@
     install_keyword("no_path_retry", &def_no_path_retry_handler, 
&snprint_def_no_path_retry);
     install_keyword("pg_timeout", &def_pg_timeout_handler, 
&snprint_def_pg_timeout);
     install_keyword("user_friendly_names", &names_handler, 
&snprint_def_user_friendly_names);
-    install_keyword("user_friendly_filter", &names_filter, 
&snprint_def_names_filter);
     install_keyword("bindings_file", &bindings_file_handler, 
&snprint_def_bindings_file);
     __deprecated install_keyword("default_selector", 
&def_selector_handler, NULL);
     __deprecated install_keyword("default_path_grouping_policy", 
&def_pgpolicy_handler, NULL);
Binary files root/workspace/multipath-tools-0.4.7/libmultipath/dict.o 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/dict.o 
differ
Binary files 
root/workspace/multipath-tools-0.4.7/libmultipath/discovery.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/discovery.o 
differ
Binary files 
root/workspace/multipath-tools-0.4.7/libmultipath/dmparser.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/dmparser.o 
differ
Binary files root/workspace/multipath-tools-0.4.7/libmultipath/hwtable.o 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/hwtable.o 
differ
Binary files 
root/workspace/multipath-tools-0.4.7/libmultipath/libmultipath-glibc.a 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/libmultipath-glibc.a 
differ
Binary files root/workspace/multipath-tools-0.4.7/libmultipath/lock.o 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/lock.o 
differ
Binary files root/workspace/multipath-tools-0.4.7/libmultipath/log.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/log.o 
differ
Binary files 
root/workspace/multipath-tools-0.4.7/libmultipath/log_pthread.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/log_pthread.o 
differ
Binary files root/workspace/multipath-tools-0.4.7/libmultipath/memory.o 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/memory.o 
differ
Binary files root/workspace/multipath-tools-0.4.7/libmultipath/parser.o 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/parser.o 
differ
Binary files 
root/workspace/multipath-tools-0.4.7/libmultipath/pgpolicies.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/pgpolicies.o 
differ
Binary files root/workspace/multipath-tools-0.4.7/libmultipath/print.o 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/print.o 
differ
diff -U 3 -H -d -r -N -x .cproject -x .project -- 
root/workspace/multipath-tools-0.4.7/libmultipath/propsel.c 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/propsel.c
--- root/workspace/multipath-tools-0.4.7/libmultipath/propsel.c   
 2008-06-12 18:48:08.000000000 -0400
+++ 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/propsel.c   
 2006-08-02 17:37:22.000000000 -0400
@@ -2,7 +2,6 @@
  * Copyright (c) 2004, 2005 Christophe Varoqui
  * Copyright (c) 2005 Benjamin Marzinski, Redhat
  * Copyright (c) 2005 Kiyoshi Ueda, NEC
- * Copyright (c) 2008 David Davidson
  */
 #include <stdio.h>
 
@@ -156,16 +155,6 @@
     return 0;
 }
 
-/* By:        Unknown
- * Modified:David Davidson    - 06/12/2008
- * Purpose:    Sets the proper alias for this path depending on specified
- *             naming instructions. If no naming option is set returns 
the wwid.
- *             as the alias.
- * Output:    Will set mp->alias depending on what is set in config file
- *             user_friendly_names:     will set the name to mpathXX
- *             user_friendly_filter:     will set it to the output of 
the cmd
- *             default:                the original wwid
- */
 extern int
 select_alias (struct multipath * mp)
 {
@@ -173,13 +162,9 @@
         mp->alias = mp->mpe->alias;
     else {
         mp->alias = NULL;
-        if(conf->name_filter){
-            mp->alias = get_user_friendly_alias(mp->wwid,
-                    conf->bindings_file,conf->name_filter);
-        } else if (conf->user_friendly_names) {
+        if (conf->user_friendly_names)
             mp->alias = get_user_friendly_alias(mp->wwid,
-                    conf->bindings_file,NULL);
-        }
+                    conf->bindings_file);
         if (mp->alias == NULL){
             char *alias;
             if ((alias = MALLOC(WWID_SIZE)) != NULL){
Binary files root/workspace/multipath-tools-0.4.7/libmultipath/propsel.o 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/propsel.o 
differ
Binary files root/workspace/multipath-tools-0.4.7/libmultipath/regex.o 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/regex.o 
differ
Binary files root/workspace/multipath-tools-0.4.7/libmultipath/structs.o 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/structs.o 
differ
Binary files 
root/workspace/multipath-tools-0.4.7/libmultipath/structs_vec.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/structs_vec.o 
differ
Binary files 
root/workspace/multipath-tools-0.4.7/libmultipath/switchgroup.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/switchgroup.o 
differ
Binary files root/workspace/multipath-tools-0.4.7/libmultipath/uevent.o 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/uevent.o 
differ
Binary files root/workspace/multipath-tools-0.4.7/libmultipath/util.o 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/util.o 
differ
Binary files root/workspace/multipath-tools-0.4.7/libmultipath/uxsock.o 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/uxsock.o 
differ
Binary files root/workspace/multipath-tools-0.4.7/libmultipath/vector.o 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/vector.o 
differ
Binary files root/workspace/multipath-tools-0.4.7/libmultipath/waiter.o 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/libmultipath/waiter.o 
differ
diff -U 3 -H -d -r -N -x .cproject -x .project -- 
root/workspace/multipath-tools-0.4.7/multipath/main.c 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/multipath/main.c
--- root/workspace/multipath-tools-0.4.7/multipath/main.c    2008-06-11 
18:18:02.000000000 -0400
+++ 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/multipath/main.c   
 2007-11-09 19:01:59.000000000 -0500
@@ -307,7 +307,7 @@
     extern char *optarg;
     extern int optind;
     int i, r = 1;
-    
+
     if (getuid() != 0) {
         fprintf(stderr, "need to be root\n");
         exit(1);
Binary files root/workspace/multipath-tools-0.4.7/multipath/main.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/multipath/main.o 
differ
Binary files root/workspace/multipath-tools-0.4.7/multipath/mpath_ctl 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/multipath/mpath_ctl 
differ
Binary files root/workspace/multipath-tools-0.4.7/multipath/multipath 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/multipath/multipath 
differ
Binary files 
root/workspace/multipath-tools-0.4.7/multipath/multipath.static and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/multipath/multipath.static 
differ
diff -U 3 -H -d -r -N -x .cproject -x .project -- 
root/workspace/multipath-tools-0.4.7/multipath.conf.annotated 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/multipath.conf.annotated
--- root/workspace/multipath-tools-0.4.7/multipath.conf.annotated   
 2008-06-12 18:58:56.000000000 -0400
+++ 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/multipath.conf.annotated   
 2008-01-14 20:34:36.000000000 -0500
@@ -133,17 +133,6 @@
 #    # values  : yes|no
 #    # default : no
 #    user_friendly_names no
-#    
-#    # name    : user_friendly_filter
-#    # scope   : multipath
-#    # desc    : If set to a command will use that command to format the
-#   #             user friendly name. Overrides user_friendly_names. 
Duplicates
-#    #            will retain their old names. Overridden by wwids that 
were
-#   #             previously used in binding file. Use full in clusters 
where
-#    #            user wants to ensure that every user friendly name is 
the same for
-#    #            every node.
-#    # default :  "/bin/sed s|^.\{29\}\(.\{2\}\)\(.\{2\}\)|lun_\1_\2|"
-#    user_friendly_filter "/bin/sed 
s|^.\{29\}\(.\{2\}\)\(.\{2\}\)|lun_\1_\2|"
 #
 #    #
 #    # name    : bindings_file
Binary files root/workspace/multipath-tools-0.4.7/multipathd/cli.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/multipathd/cli.o 
differ
Binary files 
root/workspace/multipath-tools-0.4.7/multipathd/cli_handlers.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/multipathd/cli_handlers.o 
differ
Binary files root/workspace/multipath-tools-0.4.7/multipathd/copy.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/multipathd/copy.o 
differ
Binary files root/workspace/multipath-tools-0.4.7/multipathd/main.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/multipathd/main.o 
differ
Binary files root/workspace/multipath-tools-0.4.7/multipathd/multipathd 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/multipathd/multipathd 
differ
Binary files root/workspace/multipath-tools-0.4.7/multipathd/pidfile.o 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/multipathd/pidfile.o 
differ
Binary files root/workspace/multipath-tools-0.4.7/multipathd/uxclnt.o 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/multipathd/uxclnt.o 
differ
Binary files root/workspace/multipath-tools-0.4.7/multipathd/uxlsnr.o 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/multipathd/uxlsnr.o 
differ
Binary files 
root/workspace/multipath-tools-0.4.7/path_priority/pp_alua/main.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/path_priority/pp_alua/main.o 
differ
Binary files 
root/workspace/multipath-tools-0.4.7/path_priority/pp_alua/mpath_prio_alua 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/path_priority/pp_alua/mpath_prio_alua 
differ
Binary files 
root/workspace/multipath-tools-0.4.7/path_priority/pp_alua/mpath_prio_alua.static 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/path_priority/pp_alua/mpath_prio_alua.static 
differ
Binary files 
root/workspace/multipath-tools-0.4.7/path_priority/pp_alua/rtpg.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/path_priority/pp_alua/rtpg.o 
differ
Binary files 
root/workspace/multipath-tools-0.4.7/path_priority/pp_emc/mpath_prio_emc 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/path_priority/pp_emc/mpath_prio_emc 
differ
Binary files 
root/workspace/multipath-tools-0.4.7/path_priority/pp_emc/mpath_prio_emc.static 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/path_priority/pp_emc/mpath_prio_emc.static 
differ
Binary files 
root/workspace/multipath-tools-0.4.7/path_priority/pp_emc/pp_emc.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/path_priority/pp_emc/pp_emc.o 
differ
Binary files 
root/workspace/multipath-tools-0.4.7/path_priority/pp_hds_modular/mpath_prio_hds_modular 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/path_priority/pp_hds_modular/mpath_prio_hds_modular 
differ
Binary files 
root/workspace/multipath-tools-0.4.7/path_priority/pp_hds_modular/mpath_prio_hds_modular.static 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/path_priority/pp_hds_modular/mpath_prio_hds_modular.static 
differ
Binary files 
root/workspace/multipath-tools-0.4.7/path_priority/pp_hds_modular/pp_hds_modular.o 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/path_priority/pp_hds_modular/pp_hds_modular.o 
differ
Binary files 
root/workspace/multipath-tools-0.4.7/path_priority/pp_netapp/mpath_prio_ontap 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/path_priority/pp_netapp/mpath_prio_ontap 
differ
Binary files 
root/workspace/multipath-tools-0.4.7/path_priority/pp_netapp/mpath_prio_ontap.static 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/path_priority/pp_netapp/mpath_prio_ontap.static 
differ
Binary files 
root/workspace/multipath-tools-0.4.7/path_priority/pp_netapp/pp_netapp.o 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/path_priority/pp_netapp/pp_netapp.o 
differ
Binary files 
root/workspace/multipath-tools-0.4.7/path_priority/pp_rdac/mpath_prio_rdac 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/path_priority/pp_rdac/mpath_prio_rdac 
differ
Binary files 
root/workspace/multipath-tools-0.4.7/path_priority/pp_rdac/mpath_prio_rdac.static 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/path_priority/pp_rdac/mpath_prio_rdac.static 
differ
Binary files 
root/workspace/multipath-tools-0.4.7/path_priority/pp_rdac/pp_rdac.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/path_priority/pp_rdac/pp_rdac.o 
differ
Binary files 
root/workspace/multipath-tools-0.4.7/path_priority/pp_tpc/mpath_prio_tpc 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/path_priority/pp_tpc/mpath_prio_tpc 
differ
Binary files 
root/workspace/multipath-tools-0.4.7/path_priority/pp_tpc/mpath_prio_tpc.static 
and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/path_priority/pp_tpc/mpath_prio_tpc.static 
differ
Binary files 
root/workspace/multipath-tools-0.4.7/path_priority/pp_tpc/pp_tpc.o and 
usr/src/redhat/SOURCES/multipath-tools-0.4.7.rhel5.10/path_priority/pp_tpc/pp_tpc.o 
differ

                 reply	other threads:[~2008-06-18 19:44 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=485965A6.606@bluehatlinux.com \
    --to=web999@bluehatlinux.com \
    --cc=dm-devel@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.