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
--
dm-devel mailing list
dm-devel@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/dm-devel