From mboxrd@z Thu Jan 1 00:00:00 1970 From: "web999@bluehatlinux.com" Subject: user_friendly_filter feature submission Date: Wed, 18 Jun 2008 15:44:38 -0400 Message-ID: <485965A6.606@bluehatlinux.com> Reply-To: device-mapper development Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dm-devel-bounces@redhat.com Errors-To: dm-devel-bounces@redhat.com To: dm-devel@redhat.com List-Id: dm-devel.ids 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 #include @@ -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 #include @@ -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 @@ -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 @@ -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