Updated to latest upstream 0.4.9 code : multipath-tools-090729.tgz (git
commit id: d678c139719d5631194b50e49f16ca97162ecd0f) moved multipath bindings file from /var/lib/multipath to /etc/multipath Fixed 354961, 432520
This commit is contained in:
parent
39c08730f0
commit
c7ea1a3b8d
@ -1 +1 @@
|
|||||||
multipath-tools-090429.tgz
|
multipath-tools-090729.tgz
|
||||||
|
@ -1,13 +0,0 @@
|
|||||||
Index: multipath-tools/libmultipath/alias.c
|
|
||||||
===================================================================
|
|
||||||
--- multipath-tools.orig/libmultipath/alias.c
|
|
||||||
+++ multipath-tools/libmultipath/alias.c
|
|
||||||
@@ -243,7 +243,7 @@ lookup_binding(FILE *f, char *map_wwid,
|
|
||||||
curr_id = scan_devname(alias);
|
|
||||||
if (curr_id >= id)
|
|
||||||
id = curr_id + 1;
|
|
||||||
- wwid = strtok(NULL, " \t");
|
|
||||||
+ wwid = strtok(NULL, "");
|
|
||||||
if (!wwid){
|
|
||||||
condlog(3,
|
|
||||||
"Ignoring malformed line %u in bindings file",
|
|
172
bindings_file.patch
Normal file
172
bindings_file.patch
Normal file
@ -0,0 +1,172 @@
|
|||||||
|
Add the ability to change the location of the user_friendly_names
|
||||||
|
binding file.
|
||||||
|
|
||||||
|
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
---
|
||||||
|
libmultipath/config.c | 11 ++++++++---
|
||||||
|
libmultipath/dict.c | 24 ++++++++++++++++++++++++
|
||||||
|
multipath.conf.annotated | 9 +++++++++
|
||||||
|
multipath.conf.defaults | 1 +
|
||||||
|
multipath/main.c | 4 +++-
|
||||||
|
multipath/multipath.conf.5 | 8 ++++++--
|
||||||
|
6 files changed, 51 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
Index: multipath-tools-090513/libmultipath/config.c
|
||||||
|
===================================================================
|
||||||
|
--- multipath-tools-090513.orig/libmultipath/config.c
|
||||||
|
+++ multipath-tools-090513/libmultipath/config.c
|
||||||
|
@@ -405,6 +405,9 @@ free_config (struct config * conf)
|
||||||
|
if (conf->checker_name)
|
||||||
|
FREE(conf->checker_name);
|
||||||
|
|
||||||
|
+ if (conf->bindings_file)
|
||||||
|
+ FREE(conf->bindings_file);
|
||||||
|
+
|
||||||
|
free_blacklist(conf->blist_devnode);
|
||||||
|
free_blacklist(conf->blist_wwid);
|
||||||
|
free_blacklist_device(conf->blist_device);
|
||||||
|
@@ -437,7 +440,6 @@ load_config (char * file)
|
||||||
|
conf->dev_type = DEV_NONE;
|
||||||
|
conf->minio = 1000;
|
||||||
|
conf->max_fds = 0;
|
||||||
|
- conf->bindings_file = DEFAULT_BINDINGS_FILE;
|
||||||
|
conf->multipath_dir = set_default(DEFAULT_MULTIPATHDIR);
|
||||||
|
conf->flush_on_last_del = 0;
|
||||||
|
conf->attribute_flags = 0;
|
||||||
|
@@ -535,9 +537,12 @@ load_config (char * file)
|
||||||
|
if (conf->hwhandler == NULL)
|
||||||
|
conf->hwhandler = set_default(DEFAULT_HWHANDLER);
|
||||||
|
|
||||||
|
+ if (conf->bindings_file == NULL)
|
||||||
|
+ conf->bindings_file = set_default(DEFAULT_BINDINGS_FILE);
|
||||||
|
+
|
||||||
|
if (!conf->selector || !conf->udev_dir || !conf->multipath_dir ||
|
||||||
|
- !conf->getuid || !conf->features ||
|
||||||
|
- !conf->hwhandler)
|
||||||
|
+ !conf->getuid || !conf->features || !conf->hwhandler ||
|
||||||
|
+ !conf->bindings_file)
|
||||||
|
goto out;
|
||||||
|
|
||||||
|
if (!conf->prio_name)
|
||||||
|
Index: multipath-tools-090513/libmultipath/dict.c
|
||||||
|
===================================================================
|
||||||
|
--- multipath-tools-090513.orig/libmultipath/dict.c
|
||||||
|
+++ multipath-tools-090513/libmultipath/dict.c
|
||||||
|
@@ -423,6 +423,17 @@ names_handler(vector strvec)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
+static int
|
||||||
|
+def_bindings_file_handler(vector strvec)
|
||||||
|
+{
|
||||||
|
+ conf->bindings_file = set_value(strvec);
|
||||||
|
+
|
||||||
|
+ if (!conf->bindings_file)
|
||||||
|
+ return 1;
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
* blacklist block handlers
|
||||||
|
*/
|
||||||
|
@@ -1920,6 +1931,18 @@ snprint_def_user_friendly_names (char *
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
+snprint_def_bindings_file(char * buff, int len, void * data)
|
||||||
|
+{
|
||||||
|
+ if (conf->bindings_file == NULL)
|
||||||
|
+ return 0;
|
||||||
|
+ if (strlen(conf->bindings_file) == strlen(DEFAULT_BINDINGS_FILE) &&
|
||||||
|
+ !strcmp(conf->bindings_file, DEFAULT_BINDINGS_FILE))
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ return snprintf(buff, len, "%s", conf->bindings_file);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int
|
||||||
|
snprint_ble_simple (char * buff, int len, void * data)
|
||||||
|
{
|
||||||
|
struct blentry * ble = (struct blentry *)data;
|
||||||
|
@@ -1969,6 +1992,7 @@ init_keywords(void)
|
||||||
|
install_keyword("pg_timeout", &def_pg_timeout_handler, &snprint_def_pg_timeout);
|
||||||
|
install_keyword("flush_on_last_del", &def_flush_on_last_del_handler, &snprint_def_flush_on_last_del);
|
||||||
|
install_keyword("user_friendly_names", &names_handler, &snprint_def_user_friendly_names);
|
||||||
|
+ install_keyword("bindings_file", &def_bindings_file_handler, &snprint_def_bindings_file);
|
||||||
|
install_keyword("mode", &def_mode_handler, &snprint_def_mode);
|
||||||
|
install_keyword("uid", &def_uid_handler, &snprint_def_uid);
|
||||||
|
install_keyword("gid", &def_gid_handler, &snprint_def_gid);
|
||||||
|
Index: multipath-tools-090513/multipath.conf.annotated
|
||||||
|
===================================================================
|
||||||
|
--- multipath-tools-090513.orig/multipath.conf.annotated
|
||||||
|
+++ multipath-tools-090513/multipath.conf.annotated
|
||||||
|
@@ -198,6 +198,15 @@
|
||||||
|
# # default : determined by the process
|
||||||
|
# gid disk
|
||||||
|
#
|
||||||
|
+# #
|
||||||
|
+# # name : bindings_file
|
||||||
|
+# # scope : multipath
|
||||||
|
+# # desc : The location of the bindings file that is used with
|
||||||
|
+# the user_friendly_names option
|
||||||
|
+# # values : <full_pathname>
|
||||||
|
+# # default : "/var/lib/multipath/bindings"
|
||||||
|
+# bindings_file "/etc/multipath_bindings"
|
||||||
|
+#
|
||||||
|
#}
|
||||||
|
#
|
||||||
|
##
|
||||||
|
Index: multipath-tools-090513/multipath.conf.defaults
|
||||||
|
===================================================================
|
||||||
|
--- multipath-tools-090513.orig/multipath.conf.defaults
|
||||||
|
+++ multipath-tools-090513/multipath.conf.defaults
|
||||||
|
@@ -14,6 +14,7 @@
|
||||||
|
# failback manual
|
||||||
|
# no_path_retry fail
|
||||||
|
# user_friendly_names no
|
||||||
|
+# bindings_file "/var/lib/multipath/bindings"
|
||||||
|
#}
|
||||||
|
#
|
||||||
|
#blacklist {
|
||||||
|
Index: multipath-tools-090513/multipath/main.c
|
||||||
|
===================================================================
|
||||||
|
--- multipath-tools-090513.orig/multipath/main.c
|
||||||
|
+++ multipath-tools-090513/multipath/main.c
|
||||||
|
@@ -362,7 +362,9 @@ main (int argc, char *argv[])
|
||||||
|
conf->verbosity = atoi(optarg);
|
||||||
|
break;
|
||||||
|
case 'b':
|
||||||
|
- conf->bindings_file = optarg;
|
||||||
|
+ if (conf->bindings_file)
|
||||||
|
+ FREE(conf->bindings_file);
|
||||||
|
+ conf->bindings_file = STRDUP(optarg);
|
||||||
|
break;
|
||||||
|
case 'd':
|
||||||
|
conf->dry_run = 1;
|
||||||
|
Index: multipath-tools-090513/multipath/multipath.conf.5
|
||||||
|
===================================================================
|
||||||
|
--- multipath-tools-090513.orig/multipath/multipath.conf.5
|
||||||
|
+++ multipath-tools-090513/multipath/multipath.conf.5
|
||||||
|
@@ -221,8 +221,7 @@ for never stop queueing. Default is 0.
|
||||||
|
.B user_friendly_names
|
||||||
|
If set to
|
||||||
|
.I yes
|
||||||
|
-, using the bindings file
|
||||||
|
-.I /var/lib/multipath/bindings
|
||||||
|
+, using the bindings file (by default \fI/var/lib/multipath/bindings\fR)
|
||||||
|
to assign a persistent and unique alias to the multipath, in the form of mpath<n>.
|
||||||
|
If set to
|
||||||
|
.I no
|
||||||
|
@@ -231,6 +230,11 @@ be overriden by any specific aliases in
|
||||||
|
Default is
|
||||||
|
.I no
|
||||||
|
.TP
|
||||||
|
+.B bindings_file
|
||||||
|
+Specify the location of the bindings file used by the user_friendly_names
|
||||||
|
+option. Default is
|
||||||
|
+.I /var/lib/multipath/bindings
|
||||||
|
+.TP
|
||||||
|
.B max_fds
|
||||||
|
Specify the maximum number of file descriptors that can be opened by multipath
|
||||||
|
and multipathd. This is equivalent to ulimit -n. A value of \fImax\fR will set
|
@ -1,7 +1,13 @@
|
|||||||
Index: multipath-tools-080519/cciss_id/cciss_id.c
|
---
|
||||||
|
Makefile | 3 -
|
||||||
|
cciss_id/Makefile | 47 +++++++++++++++++++
|
||||||
|
cciss_id/cciss_id.c | 128 ++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
3 files changed, 177 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
Index: multipath-tools-090724/cciss_id/cciss_id.c
|
||||||
===================================================================
|
===================================================================
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ multipath-tools-080519/cciss_id/cciss_id.c
|
+++ multipath-tools-090724/cciss_id/cciss_id.c
|
||||||
@@ -0,0 +1,128 @@
|
@@ -0,0 +1,128 @@
|
||||||
+/*
|
+/*
|
||||||
+ *****************************************************************************
|
+ *****************************************************************************
|
||||||
@ -131,10 +137,10 @@ Index: multipath-tools-080519/cciss_id/cciss_id.c
|
|||||||
+ close(fd);
|
+ close(fd);
|
||||||
+ return 0;
|
+ return 0;
|
||||||
+}
|
+}
|
||||||
Index: multipath-tools-080519/cciss_id/Makefile
|
Index: multipath-tools-090724/cciss_id/Makefile
|
||||||
===================================================================
|
===================================================================
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ multipath-tools-080519/cciss_id/Makefile
|
+++ multipath-tools-090724/cciss_id/Makefile
|
||||||
@@ -0,0 +1,47 @@
|
@@ -0,0 +1,47 @@
|
||||||
+
|
+
|
||||||
+# *****************************************************************************
|
+# *****************************************************************************
|
||||||
@ -183,10 +189,10 @@ Index: multipath-tools-080519/cciss_id/Makefile
|
|||||||
+
|
+
|
||||||
+clean:
|
+clean:
|
||||||
+ rm -f core.* *.o $(EXEC) *.gz
|
+ rm -f core.* *.o $(EXEC) *.gz
|
||||||
Index: multipath-tools-080519/Makefile
|
Index: multipath-tools-090724/Makefile
|
||||||
===================================================================
|
===================================================================
|
||||||
--- multipath-tools-080519.orig/Makefile
|
--- multipath-tools-090724.orig/Makefile
|
||||||
+++ multipath-tools-080519/Makefile
|
+++ multipath-tools-090724/Makefile
|
||||||
@@ -25,7 +25,8 @@ BUILDDIRS = \
|
@@ -25,7 +25,8 @@ BUILDDIRS = \
|
||||||
libmultipath/checkers \
|
libmultipath/checkers \
|
||||||
multipath \
|
multipath \
|
||||||
|
@ -1,20 +1,27 @@
|
|||||||
Summary: Tools to manage multipath devices using device-mapper
|
Summary: Tools to manage multipath devices using device-mapper
|
||||||
Name: device-mapper-multipath
|
Name: device-mapper-multipath
|
||||||
Version: 0.4.9
|
Version: 0.4.9
|
||||||
Release: 2%{?dist}
|
Release: 3%{?dist}
|
||||||
License: GPL+
|
License: GPL+
|
||||||
Group: System Environment/Base
|
Group: System Environment/Base
|
||||||
URL: http://christophe.varoqui.free.fr/
|
URL: http://christophe.varoqui.free.fr/
|
||||||
|
|
||||||
Source0: multipath-tools-090429.tgz
|
Source0: multipath-tools-090729.tgz
|
||||||
Patch0: lib64_multipath.patch
|
Patch0: fix_missed_uevs.patch
|
||||||
Patch1: redhatification.patch
|
Patch1: log_all_messages.patch
|
||||||
Patch2: mpath_wait.patch
|
Patch2: queue_without_daemon.patch
|
||||||
Patch3: multipath_rules.patch
|
Patch3: path_checker.patch
|
||||||
Patch4: cciss_id.patch
|
Patch4: root_init_script.patch
|
||||||
Patch5: directio_message_cleanup.patch
|
Patch5: uninstall.patch
|
||||||
Patch6: binding_error.patch
|
Patch6: lib64_multipath.patch
|
||||||
Patch7: fix_kpartx.patch
|
Patch7: directio_message_cleanup.patch
|
||||||
|
Patch8: fix_kpartx.patch
|
||||||
|
Patch9: redhatification.patch
|
||||||
|
Patch10: mpath_wait.patch
|
||||||
|
Patch11: multipath_rules.patch
|
||||||
|
Patch12: cciss_id.patch
|
||||||
|
Patch13: stop_warnings.patch
|
||||||
|
Patch14: move_bindings.patch
|
||||||
|
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||||
Requires: %{name}-libs = %{version}-%{release}
|
Requires: %{name}-libs = %{version}-%{release}
|
||||||
@ -54,16 +61,23 @@ kpartx manages partition creation and removal for device-mapper devices.
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q -n multipath-tools
|
%setup -q -n multipath-tools
|
||||||
|
%patch0 -p1 -b .fix_missed_uevs
|
||||||
|
%patch1 -p1 -b .log_all_messages
|
||||||
|
%patch2 -p1 -b .queue_without_daemon
|
||||||
|
%patch3 -p1 -b .path_checker
|
||||||
|
%patch4 -p1 -b .root_init_script
|
||||||
|
%patch5 -p1 -b .uninstall.patch
|
||||||
%if %{_lib} == "lib64"
|
%if %{_lib} == "lib64"
|
||||||
%patch0 -p1 -b .lib64_multipath
|
%patch6 -p1 -b .lib64_multipath
|
||||||
%endif
|
%endif
|
||||||
%patch1 -p1 -b .redhatification
|
%patch7 -p1 -b .directio_message_cleanup
|
||||||
%patch2 -p1 -b .mpath_wait
|
%patch8 -p1 -b .fix_kpartx
|
||||||
%patch3 -p1 -b .multipath_rules
|
%patch9 -p1 -b .redhatification
|
||||||
%patch4 -p1 -b .cciss_id
|
%patch10 -p1 -b .mpath_wait
|
||||||
%patch5 -p1 -b .directio_message
|
%patch11 -p1 -b .multipath_rules
|
||||||
%patch6 -p1 -b .binding_error
|
%patch12 -p1 -b .cciss_id
|
||||||
%patch7 -p1 -b .fix_kpartx
|
%patch13 -p1 -b .stop_warnings
|
||||||
|
%patch14 -p1 -b .move_bindings
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%define _sbindir /sbin
|
%define _sbindir /sbin
|
||||||
@ -76,7 +90,7 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
make install DESTDIR=$RPM_BUILD_ROOT bindir=%{_sbindir} syslibdir=%{_libdir} libdir=%{_libmpathdir} rcdir=%{_initrddir}
|
make install DESTDIR=$RPM_BUILD_ROOT bindir=%{_sbindir} syslibdir=%{_libdir} libdir=%{_libmpathdir} rcdir=%{_initrddir}
|
||||||
install -m 0644 multipath/multipath.conf.redhat $RPM_BUILD_ROOT/etc/multipath.conf
|
install -m 0644 multipath/multipath.conf.redhat $RPM_BUILD_ROOT/etc/multipath.conf
|
||||||
install -m 0755 multipathd/multipathd.init.redhat $RPM_BUILD_ROOT/%{_initrddir}/multipathd
|
install -m 0755 multipathd/multipathd.init.redhat $RPM_BUILD_ROOT/%{_initrddir}/multipathd
|
||||||
install -d $RPM_BUILD_ROOT/var/lib/multipath
|
install -d $RPM_BUILD_ROOT/etc/multipath
|
||||||
|
|
||||||
%clean
|
%clean
|
||||||
rm -rf $RPM_BUILD_ROOT
|
rm -rf $RPM_BUILD_ROOT
|
||||||
@ -110,7 +124,7 @@ fi
|
|||||||
%config /etc/udev/rules.d/40-multipath.rules
|
%config /etc/udev/rules.d/40-multipath.rules
|
||||||
%config(noreplace) /etc/multipath.conf
|
%config(noreplace) /etc/multipath.conf
|
||||||
%doc AUTHOR COPYING README* FAQ multipath.conf.annotated multipath.conf.defaults multipath.conf.synthetic
|
%doc AUTHOR COPYING README* FAQ multipath.conf.annotated multipath.conf.defaults multipath.conf.synthetic
|
||||||
%dir /var/lib/multipath
|
%dir /etc/multipath
|
||||||
|
|
||||||
%files libs
|
%files libs
|
||||||
%defattr(-,root,root,-)
|
%defattr(-,root,root,-)
|
||||||
@ -124,6 +138,12 @@ fi
|
|||||||
%{_mandir}/man8/kpartx.8.gz
|
%{_mandir}/man8/kpartx.8.gz
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Jul 29 2009 Benjamin Marzinski <bmarzins@redhat.com> - 0.4.9-3
|
||||||
|
- Updated to latest upstream 0.4.9 code : multipath-tools-090729.tgz
|
||||||
|
(git commit id: d678c139719d5631194b50e49f16ca97162ecd0f)
|
||||||
|
- moved multipath bindings file from /var/lib/multipath to /etc/multipath
|
||||||
|
- Fixed 354961, 432520
|
||||||
|
|
||||||
* Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.4.9-2
|
* Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.4.9-2
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
diff --git a/libmultipath/checkers/directio.c b/libmultipath/checkers/directio.c
|
Index: multipath-tools-090724/libmultipath/checkers/directio.c
|
||||||
index 4728424..7624c4e 100644
|
===================================================================
|
||||||
--- a/libmultipath/checkers/directio.c
|
--- multipath-tools-090724.orig/libmultipath/checkers/directio.c
|
||||||
+++ b/libmultipath/checkers/directio.c
|
+++ multipath-tools-090724/libmultipath/checkers/directio.c
|
||||||
@@ -148,10 +148,11 @@ check_state(int fd, struct directio_context *ct, int sync)
|
@@ -148,10 +148,11 @@ check_state(int fd, struct directio_cont
|
||||||
}
|
}
|
||||||
ct->running++;
|
ct->running++;
|
||||||
|
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
--- multipath-tools.old/kpartx/kpartx.c 2008-07-23 22:49:52.000000000 +0200
|
Index: multipath-tools-090724/kpartx/kpartx.c
|
||||||
+++ multipath-tools/kpartx/kpartx.c 2009-03-06 13:32:49.000000000 +0100
|
===================================================================
|
||||||
@@ -474,6 +474,7 @@ main(int argc, char **argv){
|
--- multipath-tools-090724.orig/kpartx/kpartx.c
|
||||||
|
+++ multipath-tools-090724/kpartx/kpartx.c
|
||||||
|
@@ -489,6 +489,7 @@ main(int argc, char **argv){
|
||||||
d = c;
|
d = c;
|
||||||
while (c) {
|
while (c) {
|
||||||
for (j = 0; j < n; j++) {
|
for (j = 0; j < n; j++) {
|
||||||
@ -8,7 +10,7 @@
|
|||||||
int k = slices[j].container - 1;
|
int k = slices[j].container - 1;
|
||||||
|
|
||||||
if (slices[j].size == 0)
|
if (slices[j].size == 0)
|
||||||
@@ -484,7 +485,7 @@ main(int argc, char **argv){
|
@@ -499,7 +500,7 @@ main(int argc, char **argv){
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* Skip all simple slices */
|
/* Skip all simple slices */
|
||||||
@ -17,7 +19,7 @@
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* Check container slice */
|
/* Check container slice */
|
||||||
@@ -499,10 +500,11 @@ main(int argc, char **argv){
|
@@ -514,10 +515,11 @@ main(int argc, char **argv){
|
||||||
}
|
}
|
||||||
strip_slash(partname);
|
strip_slash(partname);
|
||||||
|
|
||||||
|
26
fix_missed_uevs.patch
Normal file
26
fix_missed_uevs.patch
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
Index: multipath-tools-090724/libmultipath/uevent.c
|
||||||
|
===================================================================
|
||||||
|
--- multipath-tools-090724.orig/libmultipath/uevent.c
|
||||||
|
+++ multipath-tools-090724/libmultipath/uevent.c
|
||||||
|
@@ -231,7 +231,8 @@ int uevent_listen(int (*uev_trigger)(str
|
||||||
|
smsg.msg_control = cred_msg;
|
||||||
|
smsg.msg_controllen = sizeof(cred_msg);
|
||||||
|
|
||||||
|
- if (recvmsg(sock, &smsg, 0) < 0) {
|
||||||
|
+ buflen = recvmsg(sock, &smsg, 0);
|
||||||
|
+ if (buflen < 0) {
|
||||||
|
if (errno != EINTR)
|
||||||
|
condlog(0, "error receiving message");
|
||||||
|
continue;
|
||||||
|
@@ -286,8 +287,10 @@ int uevent_listen(int (*uev_trigger)(str
|
||||||
|
/* action string */
|
||||||
|
uev->action = buffer;
|
||||||
|
pos = strchr(buffer, '@');
|
||||||
|
- if (!pos)
|
||||||
|
+ if (!pos) {
|
||||||
|
+ condlog(3, "bad action string '%s'", buffer);
|
||||||
|
continue;
|
||||||
|
+ }
|
||||||
|
pos[0] = '\0';
|
||||||
|
|
||||||
|
/* sysfs path */
|
@ -1,12 +1,43 @@
|
|||||||
diff --git a/libmultipath/defaults.h b/libmultipath/defaults.h
|
Index: multipath-tools-090724/libmultipath/defaults.h
|
||||||
index d7f93cb..357c519 100644
|
===================================================================
|
||||||
--- a/libmultipath/defaults.h
|
--- multipath-tools-090724.orig/libmultipath/defaults.h
|
||||||
+++ b/libmultipath/defaults.h
|
+++ multipath-tools-090724/libmultipath/defaults.h
|
||||||
@@ -1,6 +1,6 @@
|
@@ -1,6 +1,6 @@
|
||||||
#define DEFAULT_GETUID "/lib/udev/scsi_id --whitelisted --device=/dev/%n"
|
#define DEFAULT_GETUID "/lib/udev/scsi_id --whitelisted --device=/dev/%n"
|
||||||
#define DEFAULT_UDEVDIR "/dev"
|
#define DEFAULT_UDEVDIR "/dev"
|
||||||
-#define DEFAULT_MULTIPATHDIR "/lib/multipath"
|
-#define DEFAULT_MULTIPATHDIR "/lib/multipath"
|
||||||
+#define DEFAULT_MULTIPATHDIR "/lib64/multipath"
|
+#define DEFAULT_MULTIPATHDIR "/" LIB_STRING "/multipath"
|
||||||
#define DEFAULT_SELECTOR "round-robin 0"
|
#define DEFAULT_SELECTOR "round-robin 0"
|
||||||
#define DEFAULT_FEATURES "0"
|
#define DEFAULT_FEATURES "0"
|
||||||
#define DEFAULT_HWHANDLER "0"
|
#define DEFAULT_HWHANDLER "0"
|
||||||
|
Index: multipath-tools-090724/Makefile.inc
|
||||||
|
===================================================================
|
||||||
|
--- multipath-tools-090724.orig/Makefile.inc
|
||||||
|
+++ multipath-tools-090724/Makefile.inc
|
||||||
|
@@ -13,6 +13,8 @@ ifeq ($(TOPDIR),)
|
||||||
|
TOPDIR = ..
|
||||||
|
endif
|
||||||
|
|
||||||
|
+ LIB=lib64
|
||||||
|
+
|
||||||
|
prefix =
|
||||||
|
exec_prefix = $(prefix)
|
||||||
|
bindir = $(exec_prefix)/sbin
|
||||||
|
@@ -21,14 +23,14 @@ multipathdir = $(TOPDIR)/libmultipath
|
||||||
|
mandir = $(prefix)/usr/share/man/man8
|
||||||
|
man5dir = $(prefix)/usr/share/man/man5
|
||||||
|
rcdir = $(prefix)/etc/init.d
|
||||||
|
-syslibdir = $(prefix)/lib
|
||||||
|
-libdir = $(prefix)/lib/multipath
|
||||||
|
+syslibdir = $(prefix)/$(LIB)
|
||||||
|
+libdir = $(prefix)/$(LIB)/multipath
|
||||||
|
|
||||||
|
GZIP = /bin/gzip -9 -c
|
||||||
|
INSTALL_PROGRAM = install
|
||||||
|
|
||||||
|
OPTFLAGS = -pipe -g -Wall -Wunused -Wstrict-prototypes
|
||||||
|
-CFLAGS = $(OPTFLAGS) -fPIC
|
||||||
|
+CFLAGS = $(OPTFLAGS) -fPIC -DLIB_STRING=\"${LIB}\"
|
||||||
|
SHARED_FLAGS = -shared
|
||||||
|
|
||||||
|
%.o: %.c
|
||||||
|
13
log_all_messages.patch
Normal file
13
log_all_messages.patch
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
Index: multipath-tools-090724/libmultipath/log.c
|
||||||
|
===================================================================
|
||||||
|
--- multipath-tools-090724.orig/libmultipath/log.c
|
||||||
|
+++ multipath-tools-090724/libmultipath/log.c
|
||||||
|
@@ -181,7 +181,7 @@ int log_dequeue (void * buff)
|
||||||
|
|
||||||
|
memset((void *)src, 0, len);
|
||||||
|
|
||||||
|
- return la->empty;
|
||||||
|
+ return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
38
move_bindings.patch
Normal file
38
move_bindings.patch
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
Index: multipath-tools-090724/libmultipath/defaults.h
|
||||||
|
===================================================================
|
||||||
|
--- multipath-tools-090724.orig/libmultipath/defaults.h
|
||||||
|
+++ multipath-tools-090724/libmultipath/defaults.h
|
||||||
|
@@ -19,6 +19,6 @@
|
||||||
|
#define DEFAULT_PIDFILE "/var/run/multipathd.pid"
|
||||||
|
#define DEFAULT_SOCKET "/var/run/multipathd.sock"
|
||||||
|
#define DEFAULT_CONFIGFILE "/etc/multipath.conf"
|
||||||
|
-#define DEFAULT_BINDINGS_FILE "/var/lib/multipath/bindings"
|
||||||
|
+#define DEFAULT_BINDINGS_FILE "/etc/multipath/bindings"
|
||||||
|
|
||||||
|
char * set_default (char * str);
|
||||||
|
Index: multipath-tools-090724/multipath.conf.annotated
|
||||||
|
===================================================================
|
||||||
|
--- multipath-tools-090724.orig/multipath.conf.annotated
|
||||||
|
+++ multipath-tools-090724/multipath.conf.annotated
|
||||||
|
@@ -163,7 +163,7 @@
|
||||||
|
# # name : user_friendly_names
|
||||||
|
# # scope : multipath
|
||||||
|
# # desc : If set to "yes", using the bindings file
|
||||||
|
-# # /var/lib/multipath/bindings to assign a persistent and
|
||||||
|
+# # /etc/multipath/bindings to assign a persistent and
|
||||||
|
# # unique alias to the multipath, in the form of mpath<n>.
|
||||||
|
# # If set to "no" use the WWID as the alias. In either case
|
||||||
|
# # this be will be overriden by any specific aliases in this
|
||||||
|
Index: multipath-tools-090724/multipath/multipath.conf.5
|
||||||
|
===================================================================
|
||||||
|
--- multipath-tools-090724.orig/multipath/multipath.conf.5
|
||||||
|
+++ multipath-tools-090724/multipath/multipath.conf.5
|
||||||
|
@@ -222,7 +222,7 @@ for never stop queueing. Default is 0.
|
||||||
|
If set to
|
||||||
|
.I yes
|
||||||
|
, using the bindings file
|
||||||
|
-.I /var/lib/multipath/bindings
|
||||||
|
+.I /etc/multipath/bindings
|
||||||
|
to assign a persistent and unique alias to the multipath, in the form of mpath<n>.
|
||||||
|
If set to
|
||||||
|
.I no
|
@ -1,7 +1,12 @@
|
|||||||
diff --git a/multipath/Makefile b/multipath/Makefile
|
---
|
||||||
index e0031a2..fe377d8 100644
|
multipath/Makefile | 3 ++-
|
||||||
--- a/multipath/Makefile
|
multipath/mpath_wait | 17 +++++++++++++++++
|
||||||
+++ b/multipath/Makefile
|
2 files changed, 19 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
Index: multipath-tools-090724/multipath/Makefile
|
||||||
|
===================================================================
|
||||||
|
--- multipath-tools-090724.orig/multipath/Makefile
|
||||||
|
+++ multipath-tools-090724/multipath/Makefile
|
||||||
@@ -20,7 +20,7 @@ $(EXEC): $(OBJS)
|
@@ -20,7 +20,7 @@ $(EXEC): $(OBJS)
|
||||||
|
|
||||||
install:
|
install:
|
||||||
@ -11,7 +16,7 @@ index e0031a2..fe377d8 100644
|
|||||||
$(INSTALL_PROGRAM) -d $(DESTDIR)/etc/udev/rules.d
|
$(INSTALL_PROGRAM) -d $(DESTDIR)/etc/udev/rules.d
|
||||||
$(INSTALL_PROGRAM) -m 644 multipath.rules $(DESTDIR)/etc/udev/rules.d/
|
$(INSTALL_PROGRAM) -m 644 multipath.rules $(DESTDIR)/etc/udev/rules.d/
|
||||||
$(INSTALL_PROGRAM) -d $(DESTDIR)$(mandir)
|
$(INSTALL_PROGRAM) -d $(DESTDIR)$(mandir)
|
||||||
@@ -31,6 +31,7 @@ install:
|
@@ -34,6 +34,7 @@ install:
|
||||||
uninstall:
|
uninstall:
|
||||||
rm $(DESTDIR)/etc/udev/rules.d/multipath.rules
|
rm $(DESTDIR)/etc/udev/rules.d/multipath.rules
|
||||||
rm $(DESTDIR)$(bindir)/$(EXEC)
|
rm $(DESTDIR)$(bindir)/$(EXEC)
|
||||||
@ -19,11 +24,10 @@ index e0031a2..fe377d8 100644
|
|||||||
rm $(DESTDIR)$(mandir)/$(EXEC).8.gz
|
rm $(DESTDIR)$(mandir)/$(EXEC).8.gz
|
||||||
rm $(DESTDIR)$(man5dir)/$(EXEC).conf.5.gz
|
rm $(DESTDIR)$(man5dir)/$(EXEC).conf.5.gz
|
||||||
|
|
||||||
diff --git a/multipath/mpath_wait b/multipath/mpath_wait
|
Index: multipath-tools-090724/multipath/mpath_wait
|
||||||
new file mode 100644
|
===================================================================
|
||||||
index 0000000..d4047cc
|
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/multipath/mpath_wait
|
+++ multipath-tools-090724/multipath/mpath_wait
|
||||||
@@ -0,0 +1,17 @@
|
@@ -0,0 +1,17 @@
|
||||||
+#!/bin/bash
|
+#!/bin/bash
|
||||||
+
|
+
|
||||||
|
@ -1,8 +1,13 @@
|
|||||||
diff --git a/multipath/Makefile b/multipath/Makefile
|
---
|
||||||
index fe377d8..b2c4fa6 100644
|
multipath/Makefile | 4 ++--
|
||||||
--- a/multipath/Makefile
|
multipath/multipath.rules | 13 +++++++------
|
||||||
+++ b/multipath/Makefile
|
2 files changed, 9 insertions(+), 8 deletions(-)
|
||||||
@@ -22,14 +22,14 @@ install:
|
|
||||||
|
Index: multipath-tools-090724/multipath/Makefile
|
||||||
|
===================================================================
|
||||||
|
--- multipath-tools-090724.orig/multipath/Makefile
|
||||||
|
+++ multipath-tools-090724/multipath/Makefile
|
||||||
|
@@ -22,7 +22,7 @@ install:
|
||||||
$(INSTALL_PROGRAM) -d $(DESTDIR)$(bindir)
|
$(INSTALL_PROGRAM) -d $(DESTDIR)$(bindir)
|
||||||
$(INSTALL_PROGRAM) -m 755 $(EXEC) mpath_wait $(DESTDIR)$(bindir)/
|
$(INSTALL_PROGRAM) -m 755 $(EXEC) mpath_wait $(DESTDIR)$(bindir)/
|
||||||
$(INSTALL_PROGRAM) -d $(DESTDIR)/etc/udev/rules.d
|
$(INSTALL_PROGRAM) -d $(DESTDIR)/etc/udev/rules.d
|
||||||
@ -11,7 +16,8 @@ index fe377d8..b2c4fa6 100644
|
|||||||
$(INSTALL_PROGRAM) -d $(DESTDIR)$(mandir)
|
$(INSTALL_PROGRAM) -d $(DESTDIR)$(mandir)
|
||||||
$(INSTALL_PROGRAM) -m 644 $(EXEC).8.gz $(DESTDIR)$(mandir)
|
$(INSTALL_PROGRAM) -m 644 $(EXEC).8.gz $(DESTDIR)$(mandir)
|
||||||
$(INSTALL_PROGRAM) -d $(DESTDIR)$(man5dir)
|
$(INSTALL_PROGRAM) -d $(DESTDIR)$(man5dir)
|
||||||
$(INSTALL_PROGRAM) -m 644 $(EXEC).conf.5.gz $(DESTDIR)$(man5dir)
|
@@ -32,7 +32,7 @@ install:
|
||||||
|
fi
|
||||||
|
|
||||||
uninstall:
|
uninstall:
|
||||||
- rm $(DESTDIR)/etc/udev/rules.d/multipath.rules
|
- rm $(DESTDIR)/etc/udev/rules.d/multipath.rules
|
||||||
@ -19,10 +25,10 @@ index fe377d8..b2c4fa6 100644
|
|||||||
rm $(DESTDIR)$(bindir)/$(EXEC)
|
rm $(DESTDIR)$(bindir)/$(EXEC)
|
||||||
rm $(DESTDIR)$(bindir)/mpath_wait
|
rm $(DESTDIR)$(bindir)/mpath_wait
|
||||||
rm $(DESTDIR)$(mandir)/$(EXEC).8.gz
|
rm $(DESTDIR)$(mandir)/$(EXEC).8.gz
|
||||||
diff --git a/multipath/multipath.rules b/multipath/multipath.rules
|
Index: multipath-tools-090724/multipath/multipath.rules
|
||||||
index ac97749..ad2ff2a 100644
|
===================================================================
|
||||||
--- a/multipath/multipath.rules
|
--- multipath-tools-090724.orig/multipath/multipath.rules
|
||||||
+++ b/multipath/multipath.rules
|
+++ multipath-tools-090724/multipath/multipath.rules
|
||||||
@@ -1,7 +1,8 @@
|
@@ -1,7 +1,8 @@
|
||||||
-#
|
-#
|
||||||
-# udev rules for multipathing.
|
-# udev rules for multipathing.
|
||||||
|
181
path_checker.patch
Normal file
181
path_checker.patch
Normal file
@ -0,0 +1,181 @@
|
|||||||
|
Index: multipath-tools-090724/libmultipath/checkers/tur.c
|
||||||
|
===================================================================
|
||||||
|
--- multipath-tools-090724.orig/libmultipath/checkers/tur.c
|
||||||
|
+++ multipath-tools-090724/libmultipath/checkers/tur.c
|
||||||
|
@@ -69,7 +69,6 @@ libcheck_check (struct checker * c)
|
||||||
|
case DID_NO_CONNECT:
|
||||||
|
case DID_BAD_TARGET:
|
||||||
|
case DID_ABORT:
|
||||||
|
- case DID_TRANSPORT_DISRUPTED:
|
||||||
|
case DID_TRANSPORT_FAILFAST:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
Index: multipath-tools-090724/libmultipath/discovery.c
|
||||||
|
===================================================================
|
||||||
|
--- multipath-tools-090724.orig/libmultipath/discovery.c
|
||||||
|
+++ multipath-tools-090724/libmultipath/discovery.c
|
||||||
|
@@ -579,10 +579,9 @@ struct sysfs_device *sysfs_device_from_p
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
-path_offline (struct path * pp)
|
||||||
|
+path_state (struct path * pp, char * buff)
|
||||||
|
{
|
||||||
|
struct sysfs_device * parent;
|
||||||
|
- char buff[SCSI_STATE_SIZE];
|
||||||
|
|
||||||
|
pp->sysdev = sysfs_device_from_path(pp);
|
||||||
|
if (!pp->sysdev) {
|
||||||
|
@@ -604,6 +603,16 @@ path_offline (struct path * pp)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
condlog(3, "%s: state = %s", pp->dev, buff);
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+int
|
||||||
|
+path_offline (struct path * pp)
|
||||||
|
+{
|
||||||
|
+ char buff[SCSI_STATE_SIZE];
|
||||||
|
+
|
||||||
|
+ if (path_state(pp, buff))
|
||||||
|
+ return 1;
|
||||||
|
|
||||||
|
if (!strncmp(buff, "offline", 7)) {
|
||||||
|
pp->offline = 1;
|
||||||
|
@@ -613,6 +622,21 @@ path_offline (struct path * pp)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
+int
|
||||||
|
+path_blocked (struct path * pp)
|
||||||
|
+{
|
||||||
|
+ char buff[SCSI_STATE_SIZE];
|
||||||
|
+
|
||||||
|
+ if (pp->bus != SYSFS_BUS_SCSI)
|
||||||
|
+ return 0;
|
||||||
|
+ if (path_state(pp, buff))
|
||||||
|
+ return 0;
|
||||||
|
+ if (!strncmp(buff, "blocked", 7)) {
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
extern int
|
||||||
|
sysfs_pathinfo(struct path * pp)
|
||||||
|
{
|
||||||
|
@@ -699,36 +723,43 @@ cciss_ioctl_pathinfo (struct path * pp,
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static int
|
||||||
|
-get_state (struct path * pp)
|
||||||
|
+int
|
||||||
|
+get_state (struct path * pp, int daemon)
|
||||||
|
{
|
||||||
|
struct checker * c = &pp->checker;
|
||||||
|
+ int state;
|
||||||
|
|
||||||
|
condlog(3, "%s: get_state", pp->dev);
|
||||||
|
|
||||||
|
if (!checker_selected(c)) {
|
||||||
|
+ if (daemon)
|
||||||
|
+ pathinfo(pp, conf->hwtable, DI_SYSFS);
|
||||||
|
select_checker(pp);
|
||||||
|
if (!checker_selected(c)) {
|
||||||
|
condlog(3, "%s: No checker selected", pp->dev);
|
||||||
|
- return 1;
|
||||||
|
+ return PATH_UNCHECKED;
|
||||||
|
}
|
||||||
|
checker_set_fd(c, pp->fd);
|
||||||
|
if (checker_init(c, pp->mpp?&pp->mpp->mpcontext:NULL)) {
|
||||||
|
condlog(3, "%s: checker init failed", pp->dev);
|
||||||
|
- return 1;
|
||||||
|
+ return PATH_UNCHECKED;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (path_offline(pp)) {
|
||||||
|
condlog(3, "%s: path offline", pp->dev);
|
||||||
|
- pp->state = PATH_DOWN;
|
||||||
|
- return 0;
|
||||||
|
+ return PATH_DOWN;
|
||||||
|
}
|
||||||
|
- pp->state = checker_check(c);
|
||||||
|
- condlog(3, "%s: state = %i", pp->dev, pp->state);
|
||||||
|
- if (pp->state == PATH_DOWN && strlen(checker_message(c)))
|
||||||
|
+ if (daemon) {
|
||||||
|
+ if (path_blocked(pp))
|
||||||
|
+ return PATH_PENDING;
|
||||||
|
+ checker_set_async(c);
|
||||||
|
+ }
|
||||||
|
+ state = checker_check(c);
|
||||||
|
+ condlog(3, "%s: state = %i", pp->dev, state);
|
||||||
|
+ if (state == PATH_DOWN && strlen(checker_message(c)))
|
||||||
|
condlog(3, "%s: checker msg is \"%s\"",
|
||||||
|
pp->dev, checker_message(c));
|
||||||
|
- return 0;
|
||||||
|
+ return state;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
@@ -813,8 +844,11 @@ pathinfo (struct path *pp, vector hwtabl
|
||||||
|
cciss_ioctl_pathinfo(pp, mask))
|
||||||
|
goto blank;
|
||||||
|
|
||||||
|
- if (mask & DI_CHECKER && get_state(pp))
|
||||||
|
- goto blank;
|
||||||
|
+ if (mask & DI_CHECKER) {
|
||||||
|
+ pp->state = get_state(pp, 0);
|
||||||
|
+ if (pp->state == PATH_UNCHECKED || pp->state == PATH_WILD)
|
||||||
|
+ goto blank;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Retrieve path priority, even for PATH_DOWN paths if it has never
|
||||||
|
Index: multipath-tools-090724/libmultipath/discovery.h
|
||||||
|
===================================================================
|
||||||
|
--- multipath-tools-090724.orig/libmultipath/discovery.h
|
||||||
|
+++ multipath-tools-090724/libmultipath/discovery.h
|
||||||
|
@@ -30,6 +30,8 @@ int path_discovery (vector pathvec, stru
|
||||||
|
int do_tur (char *);
|
||||||
|
int devt2devname (char *, char *);
|
||||||
|
int path_offline (struct path *);
|
||||||
|
+int get_state (struct path * pp, int daemon);
|
||||||
|
+int path_blocked (struct path *);
|
||||||
|
int pathinfo (struct path *, vector hwtable, int mask);
|
||||||
|
struct path * store_pathinfo (vector pathvec, vector hwtable,
|
||||||
|
char * devname, int flag);
|
||||||
|
Index: multipath-tools-090724/multipathd/main.c
|
||||||
|
===================================================================
|
||||||
|
--- multipath-tools-090724.orig/multipathd/main.c
|
||||||
|
+++ multipath-tools-090724/multipathd/main.c
|
||||||
|
@@ -908,26 +908,9 @@ check_path (struct vectors * vecs, struc
|
||||||
|
*/
|
||||||
|
pp->tick = conf->checkint;
|
||||||
|
|
||||||
|
- if (!checker_selected(&pp->checker)) {
|
||||||
|
- pathinfo(pp, conf->hwtable, DI_SYSFS);
|
||||||
|
- select_checker(pp);
|
||||||
|
- }
|
||||||
|
- if (!checker_selected(&pp->checker)) {
|
||||||
|
- condlog(0, "%s: checker is not set", pp->dev);
|
||||||
|
- return;
|
||||||
|
- }
|
||||||
|
- /*
|
||||||
|
- * Set checker in async mode.
|
||||||
|
- * Honored only by checker implementing the said mode.
|
||||||
|
- */
|
||||||
|
- checker_set_async(&pp->checker);
|
||||||
|
-
|
||||||
|
- if (path_offline(pp))
|
||||||
|
- newstate = PATH_DOWN;
|
||||||
|
- else
|
||||||
|
- newstate = checker_check(&pp->checker);
|
||||||
|
+ newstate = get_state(pp, 1);
|
||||||
|
|
||||||
|
- if (newstate < 0) {
|
||||||
|
+ if (newstate == PATH_WILD || newstate == PATH_UNCHECKED) {
|
||||||
|
condlog(2, "%s: unusable path", pp->dev);
|
||||||
|
pathinfo(pp, conf->hwtable, 0);
|
||||||
|
return;
|
153
queue_without_daemon.patch
Normal file
153
queue_without_daemon.patch
Normal file
@ -0,0 +1,153 @@
|
|||||||
|
---
|
||||||
|
libmultipath/config.h | 1 +
|
||||||
|
libmultipath/dict.c | 35 +++++++++++++++++++++++++++++++++++
|
||||||
|
libmultipath/structs.h | 6 ++++++
|
||||||
|
multipath.conf.annotated | 9 +++++++++
|
||||||
|
multipath.conf.synthetic | 1 +
|
||||||
|
multipathd/main.c | 5 +++++
|
||||||
|
6 files changed, 57 insertions(+)
|
||||||
|
|
||||||
|
Index: multipath-tools-090724/libmultipath/config.h
|
||||||
|
===================================================================
|
||||||
|
--- multipath-tools-090724.orig/libmultipath/config.h
|
||||||
|
+++ multipath-tools-090724/libmultipath/config.h
|
||||||
|
@@ -72,6 +72,7 @@ struct config {
|
||||||
|
int pg_timeout;
|
||||||
|
int max_fds;
|
||||||
|
int force_reload;
|
||||||
|
+ int queue_without_daemon;
|
||||||
|
int daemon;
|
||||||
|
int flush_on_last_del;
|
||||||
|
int attribute_flags;
|
||||||
|
Index: multipath-tools-090724/libmultipath/dict.c
|
||||||
|
===================================================================
|
||||||
|
--- multipath-tools-090724.orig/libmultipath/dict.c
|
||||||
|
+++ multipath-tools-090724/libmultipath/dict.c
|
||||||
|
@@ -333,6 +333,28 @@ def_no_path_retry_handler(vector strvec)
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
+def_queue_without_daemon(vector strvec)
|
||||||
|
+{
|
||||||
|
+ char * buff;
|
||||||
|
+
|
||||||
|
+ buff = set_value(strvec);
|
||||||
|
+ if (!buff)
|
||||||
|
+ return 1;
|
||||||
|
+
|
||||||
|
+ if (!strncmp(buff, "off", 3) || !strncmp(buff, "no", 2) ||
|
||||||
|
+ !strncmp(buff, "0", 1))
|
||||||
|
+ conf->queue_without_daemon = QUE_NO_DAEMON_OFF;
|
||||||
|
+ else if (!strncmp(buff, "on", 2) || !strncmp(buff, "yes", 3) ||
|
||||||
|
+ !strncmp(buff, "1", 1))
|
||||||
|
+ conf->queue_without_daemon = QUE_NO_DAEMON_ON;
|
||||||
|
+ else
|
||||||
|
+ conf->queue_without_daemon = QUE_NO_DAEMON_UNDEF;
|
||||||
|
+
|
||||||
|
+ free(buff);
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int
|
||||||
|
def_pg_timeout_handler(vector strvec)
|
||||||
|
{
|
||||||
|
int pg_timeout;
|
||||||
|
@@ -1846,6 +1868,18 @@ snprint_def_no_path_retry (char * buff,
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
+snprint_def_queue_without_daemon (char * buff, int len, void * data)
|
||||||
|
+{
|
||||||
|
+ switch (conf->queue_without_daemon) {
|
||||||
|
+ case QUE_NO_DAEMON_OFF:
|
||||||
|
+ return snprintf(buff, len, "no");
|
||||||
|
+ case QUE_NO_DAEMON_ON:
|
||||||
|
+ return snprintf(buff, len, "yes");
|
||||||
|
+ }
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int
|
||||||
|
snprint_def_pg_timeout (char * buff, int len, void * data)
|
||||||
|
{
|
||||||
|
if (conf->pg_timeout == DEFAULT_PGTIMEOUT)
|
||||||
|
@@ -1931,6 +1965,7 @@ init_keywords(void)
|
||||||
|
install_keyword("max_fds", &max_fds_handler, &snprint_max_fds);
|
||||||
|
install_keyword("rr_weight", &def_weight_handler, &snprint_def_rr_weight);
|
||||||
|
install_keyword("no_path_retry", &def_no_path_retry_handler, &snprint_def_no_path_retry);
|
||||||
|
+ install_keyword("queue_without_daemon", &def_queue_without_daemon, &snprint_def_queue_without_daemon);
|
||||||
|
install_keyword("pg_timeout", &def_pg_timeout_handler, &snprint_def_pg_timeout);
|
||||||
|
install_keyword("flush_on_last_del", &def_flush_on_last_del_handler, &snprint_def_flush_on_last_del);
|
||||||
|
install_keyword("user_friendly_names", &names_handler, &snprint_def_user_friendly_names);
|
||||||
|
Index: multipath-tools-090724/libmultipath/structs.h
|
||||||
|
===================================================================
|
||||||
|
--- multipath-tools-090724.orig/libmultipath/structs.h
|
||||||
|
+++ multipath-tools-090724/libmultipath/structs.h
|
||||||
|
@@ -63,6 +63,12 @@ enum pgstates {
|
||||||
|
PGSTATE_ACTIVE
|
||||||
|
};
|
||||||
|
|
||||||
|
+enum queue_without_daemon_states {
|
||||||
|
+ QUE_NO_DAEMON_UNDEF,
|
||||||
|
+ QUE_NO_DAEMON_OFF,
|
||||||
|
+ QUE_NO_DAEMON_ON,
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
enum pgtimeouts {
|
||||||
|
PGTIMEOUT_UNDEF,
|
||||||
|
PGTIMEOUT_NONE
|
||||||
|
Index: multipath-tools-090724/multipath.conf.annotated
|
||||||
|
===================================================================
|
||||||
|
--- multipath-tools-090724.orig/multipath.conf.annotated
|
||||||
|
+++ multipath-tools-090724/multipath.conf.annotated
|
||||||
|
@@ -151,6 +151,15 @@
|
||||||
|
# no_path_retry queue
|
||||||
|
#
|
||||||
|
# #
|
||||||
|
+# # name : queue_without_daemon
|
||||||
|
+# # scope : multipathd
|
||||||
|
+# # desc : If set to "no", multipathd will disable queueing for all
|
||||||
|
+# # devices when it is shut down.
|
||||||
|
+# # values : yes|no
|
||||||
|
+# # default : yes
|
||||||
|
+# queue_without_daemon no
|
||||||
|
+#
|
||||||
|
+# #
|
||||||
|
# # name : user_friendly_names
|
||||||
|
# # scope : multipath
|
||||||
|
# # desc : If set to "yes", using the bindings file
|
||||||
|
Index: multipath-tools-090724/multipath.conf.synthetic
|
||||||
|
===================================================================
|
||||||
|
--- multipath-tools-090724.orig/multipath.conf.synthetic
|
||||||
|
+++ multipath-tools-090724/multipath.conf.synthetic
|
||||||
|
@@ -16,6 +16,7 @@
|
||||||
|
# rr_weight priorities
|
||||||
|
# failback immediate
|
||||||
|
# no_path_retry fail
|
||||||
|
+# queue_without_daemon no
|
||||||
|
# user_friendly_names no
|
||||||
|
# mode 644
|
||||||
|
# uid 0
|
||||||
|
Index: multipath-tools-090724/multipathd/main.c
|
||||||
|
===================================================================
|
||||||
|
--- multipath-tools-090724.orig/multipathd/main.c
|
||||||
|
+++ multipath-tools-090724/multipathd/main.c
|
||||||
|
@@ -1334,6 +1334,8 @@ child (void * param)
|
||||||
|
pthread_t check_thr, uevent_thr, uxlsnr_thr;
|
||||||
|
pthread_attr_t log_attr, misc_attr;
|
||||||
|
struct vectors * vecs;
|
||||||
|
+ struct multipath * mpp;
|
||||||
|
+ int i;
|
||||||
|
|
||||||
|
mlockall(MCL_CURRENT | MCL_FUTURE);
|
||||||
|
|
||||||
|
@@ -1422,6 +1424,9 @@ child (void * param)
|
||||||
|
*/
|
||||||
|
block_signal(SIGHUP, NULL);
|
||||||
|
lock(vecs->lock);
|
||||||
|
+ if (conf->queue_without_daemon == QUE_NO_DAEMON_OFF)
|
||||||
|
+ vector_foreach_slot(vecs->mpvec, mpp, i)
|
||||||
|
+ dm_queue_if_no_path(mpp->alias, 0);
|
||||||
|
remove_maps_and_stop_waiters(vecs);
|
||||||
|
free_pathvec(vecs->pathvec, FREE_PATHS);
|
||||||
|
|
@ -1,8 +1,8 @@
|
|||||||
Index: multipath-tools-090407/libmultipath/hwtable.c
|
Index: multipath-tools-090724/libmultipath/hwtable.c
|
||||||
===================================================================
|
===================================================================
|
||||||
--- multipath-tools-090407.orig/libmultipath/hwtable.c 2009-04-07 15:21:33.000000000 -0500
|
--- multipath-tools-090724.orig/libmultipath/hwtable.c
|
||||||
+++ multipath-tools-090407/libmultipath/hwtable.c 2009-04-07 09:16:31.000000000 -0500
|
+++ multipath-tools-090724/libmultipath/hwtable.c
|
||||||
@@ -554,7 +554,7 @@ static struct hwentry default_hw[] = {
|
@@ -589,7 +589,7 @@ static struct hwentry default_hw[] = {
|
||||||
.vendor = "IBM",
|
.vendor = "IBM",
|
||||||
.product = "S/390 DASD ECKD",
|
.product = "S/390 DASD ECKD",
|
||||||
.bl_product = "S/390.*",
|
.bl_product = "S/390.*",
|
||||||
@ -11,10 +11,49 @@ Index: multipath-tools-090407/libmultipath/hwtable.c
|
|||||||
.features = "1 queue_if_no_path",
|
.features = "1 queue_if_no_path",
|
||||||
.hwhandler = DEFAULT_HWHANDLER,
|
.hwhandler = DEFAULT_HWHANDLER,
|
||||||
.selector = DEFAULT_SELECTOR,
|
.selector = DEFAULT_SELECTOR,
|
||||||
Index: multipath-tools-090407/multipath/multipath.conf.redhat
|
Index: multipath-tools-090724/Makefile.inc
|
||||||
===================================================================
|
===================================================================
|
||||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
--- multipath-tools-090724.orig/Makefile.inc
|
||||||
+++ multipath-tools-090407/multipath/multipath.conf.redhat 2009-04-07 09:16:31.000000000 -0500
|
+++ multipath-tools-090724/Makefile.inc
|
||||||
|
@@ -26,7 +26,7 @@ libudevdir = ${prefix}/lib/udev
|
||||||
|
multipathdir = $(TOPDIR)/libmultipath
|
||||||
|
mandir = $(prefix)/usr/share/man/man8
|
||||||
|
man5dir = $(prefix)/usr/share/man/man5
|
||||||
|
-rcdir = $(prefix)/etc/init.d
|
||||||
|
+rcdir = $(prefix)/etc/rc.d/init.d
|
||||||
|
syslibdir = $(prefix)/$(LIB)
|
||||||
|
libdir = $(prefix)/$(LIB)/multipath
|
||||||
|
|
||||||
|
Index: multipath-tools-090724/multipathd/Makefile
|
||||||
|
===================================================================
|
||||||
|
--- multipath-tools-090724.orig/multipathd/Makefile
|
||||||
|
+++ multipath-tools-090724/multipathd/Makefile
|
||||||
|
@@ -35,6 +35,7 @@ install:
|
||||||
|
$(INSTALL_PROGRAM) -d $(DESTDIR)$(bindir)
|
||||||
|
$(INSTALL_PROGRAM) -m 755 $(EXEC) $(DESTDIR)$(bindir)
|
||||||
|
$(INSTALL_PROGRAM) -d $(DESTDIR)$(rcdir)
|
||||||
|
+ $(INSTALL_PROGRAM) -m 755 multipathd.init.redhat $(DESTDIR)$(rcdir)/$(EXEC)
|
||||||
|
$(INSTALL_PROGRAM) -d $(DESTDIR)$(mandir)
|
||||||
|
$(INSTALL_PROGRAM) -m 644 $(EXEC).8.gz $(DESTDIR)$(mandir)
|
||||||
|
|
||||||
|
Index: multipath-tools-090724/multipath/Makefile
|
||||||
|
===================================================================
|
||||||
|
--- multipath-tools-090724.orig/multipath/Makefile
|
||||||
|
+++ multipath-tools-090724/multipath/Makefile
|
||||||
|
@@ -27,6 +27,9 @@ install:
|
||||||
|
$(INSTALL_PROGRAM) -m 644 $(EXEC).8.gz $(DESTDIR)$(mandir)
|
||||||
|
$(INSTALL_PROGRAM) -d $(DESTDIR)$(man5dir)
|
||||||
|
$(INSTALL_PROGRAM) -m 644 $(EXEC).conf.5.gz $(DESTDIR)$(man5dir)
|
||||||
|
+ if [ ! -e $(DESTDIR)//etc/multipath.conf ]; then \
|
||||||
|
+ $(INSTALL_PROGRAM) -m 644 multipath.conf.redhat $(DESTDIR)/etc/multipath.conf; \
|
||||||
|
+ fi
|
||||||
|
|
||||||
|
uninstall:
|
||||||
|
rm $(DESTDIR)/etc/udev/rules.d/multipath.rules
|
||||||
|
Index: multipath-tools-090724/multipath/multipath.conf.redhat
|
||||||
|
===================================================================
|
||||||
|
--- /dev/null
|
||||||
|
+++ multipath-tools-090724/multipath/multipath.conf.redhat
|
||||||
@@ -0,0 +1,97 @@
|
@@ -0,0 +1,97 @@
|
||||||
+# This is a basic configuration file with some examples, for device mapper
|
+# This is a basic configuration file with some examples, for device mapper
|
||||||
+# multipath.
|
+# multipath.
|
||||||
@ -113,10 +152,10 @@ Index: multipath-tools-090407/multipath/multipath.conf.redhat
|
|||||||
+# path_grouping_policy multibus
|
+# path_grouping_policy multibus
|
||||||
+# }
|
+# }
|
||||||
+#}
|
+#}
|
||||||
Index: multipath-tools-090407/kpartx/Makefile
|
Index: multipath-tools-090724/kpartx/Makefile
|
||||||
===================================================================
|
===================================================================
|
||||||
--- multipath-tools-090407.orig/kpartx/Makefile 2009-04-07 15:21:33.000000000 -0500
|
--- multipath-tools-090724.orig/kpartx/Makefile
|
||||||
+++ multipath-tools-090407/kpartx/Makefile 2009-04-07 09:16:31.000000000 -0500
|
+++ multipath-tools-090724/kpartx/Makefile
|
||||||
@@ -20,10 +20,10 @@ $(EXEC): $(OBJS)
|
@@ -20,10 +20,10 @@ $(EXEC): $(OBJS)
|
||||||
install: $(EXEC) $(EXEC).8
|
install: $(EXEC) $(EXEC).8
|
||||||
$(INSTALL_PROGRAM) -d $(DESTDIR)$(bindir)
|
$(INSTALL_PROGRAM) -d $(DESTDIR)$(bindir)
|
||||||
|
70
root_init_script.patch
Normal file
70
root_init_script.patch
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
Index: multipath-tools-090724/multipathd/multipathd.init.redhat
|
||||||
|
===================================================================
|
||||||
|
--- multipath-tools-090724.orig/multipathd/multipathd.init.redhat
|
||||||
|
+++ multipath-tools-090724/multipathd/multipathd.init.redhat
|
||||||
|
@@ -2,7 +2,7 @@
|
||||||
|
#
|
||||||
|
# multipathd Starts the multipath daemon
|
||||||
|
#
|
||||||
|
-# chkconfig: - 13 87
|
||||||
|
+# chkconfig: - 06 87
|
||||||
|
# description: Manages device-mapper multipath devices
|
||||||
|
|
||||||
|
### BEGIN INIT INFO
|
||||||
|
@@ -17,6 +17,7 @@ prog=`basename $DAEMON`
|
||||||
|
initdir=/etc/rc.d/init.d
|
||||||
|
lockdir=/var/lock/subsys
|
||||||
|
sysconfig=/etc/sysconfig
|
||||||
|
+syspath=/sys/block
|
||||||
|
|
||||||
|
|
||||||
|
. $initdir/functions
|
||||||
|
@@ -25,6 +26,36 @@ test -r $sysconfig/$prog && . $sysconfig
|
||||||
|
|
||||||
|
RETVAL=0
|
||||||
|
|
||||||
|
+teardown_slaves()
|
||||||
|
+{
|
||||||
|
+pushd $1 > /dev/null
|
||||||
|
+if [ -d "slaves" ]; then
|
||||||
|
+for slave in slaves/*;
|
||||||
|
+do
|
||||||
|
+ if [ "$slave" = "slaves/*" ]; then
|
||||||
|
+ read dev < $1/dev
|
||||||
|
+ tablename=`dmsetup table --target multipath | sed -n "s/\(.*\): .* $dev .*/\1/p"`
|
||||||
|
+ if ! [ -z $tablename ]; then
|
||||||
|
+ echo "Root is on a multipathed device, multipathd can not be stopped"
|
||||||
|
+ exit 1
|
||||||
|
+ fi
|
||||||
|
+ else
|
||||||
|
+ local_slave=`readlink -f $slave`;
|
||||||
|
+ teardown_slaves $local_slave;
|
||||||
|
+ fi
|
||||||
|
+ done
|
||||||
|
+
|
||||||
|
+else
|
||||||
|
+ read dev < $1/dev
|
||||||
|
+ tablename=`dmsetup table --target multipath | sed -n "s/\(.*\): .* $dev .*/\1/p"`
|
||||||
|
+ if ! [ -z $tablename ]; then
|
||||||
|
+ echo "Root is on a multipathed device, multipathd can not be stopped"
|
||||||
|
+ exit 1
|
||||||
|
+ fi
|
||||||
|
+fi
|
||||||
|
+popd > /dev/null
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
#
|
||||||
|
# See how we were called.
|
||||||
|
#
|
||||||
|
@@ -39,6 +70,11 @@ start() {
|
||||||
|
}
|
||||||
|
|
||||||
|
stop() {
|
||||||
|
+ root_dev=$(awk '{ if ($1 !~ /^[ \t]*#/ && $2 == "/") { print $1; }}' /etc/mtab)
|
||||||
|
+ dm_num=`dmsetup info -c --noheadings -o minor $root_dev`
|
||||||
|
+ root_dm_device="dm-$dm_num"
|
||||||
|
+ [ -d $syspath/$root_dm_device ] && teardown_slaves $syspath/$root_dm_device
|
||||||
|
+
|
||||||
|
echo -n $"Stopping $prog daemon: "
|
||||||
|
killproc $DAEMON
|
||||||
|
RETVAL=$?
|
2
sources
2
sources
@ -1 +1 @@
|
|||||||
450d0715048f3a8c82082ad2b9e5a2b3 multipath-tools-090429.tgz
|
89a2e3d5ee8e78c7fb487cae00345815 multipath-tools-090729.tgz
|
||||||
|
24
stop_warnings.patch
Normal file
24
stop_warnings.patch
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
Index: multipath-tools-090724/libmultipath/log_pthread.c
|
||||||
|
===================================================================
|
||||||
|
--- multipath-tools-090724.orig/libmultipath/log_pthread.c
|
||||||
|
+++ multipath-tools-090724/libmultipath/log_pthread.c
|
||||||
|
@@ -56,6 +56,7 @@ static void * log_thread (void * et)
|
||||||
|
|
||||||
|
flush_logqueue();
|
||||||
|
}
|
||||||
|
+ return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void log_thread_start (pthread_attr_t *attr)
|
||||||
|
Index: multipath-tools-090724/libmultipath/uevent.c
|
||||||
|
===================================================================
|
||||||
|
--- multipath-tools-090724.orig/libmultipath/uevent.c
|
||||||
|
+++ multipath-tools-090724/libmultipath/uevent.c
|
||||||
|
@@ -101,6 +101,7 @@ uevq_thread(void * et)
|
||||||
|
|
||||||
|
service_uevq();
|
||||||
|
}
|
||||||
|
+ return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
int uevent_listen(int (*uev_trigger)(struct uevent *, void * trigger_data),
|
26
uninstall.patch
Normal file
26
uninstall.patch
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
Index: multipath-tools-090724/libmultipath/checkers/Makefile
|
||||||
|
===================================================================
|
||||||
|
--- multipath-tools-090724.orig/libmultipath/checkers/Makefile
|
||||||
|
+++ multipath-tools-090724/libmultipath/checkers/Makefile
|
||||||
|
@@ -27,7 +27,7 @@ install:
|
||||||
|
$(INSTALL_PROGRAM) -m 755 $(LIBS) $(DESTDIR)$(libdir)
|
||||||
|
|
||||||
|
uninstall:
|
||||||
|
- rm -f $(DESTDIR)$(libdir)/$(LIBS)
|
||||||
|
+ for file in $(LIBS); do rm -f $(DESTDIR)$(libdir)/$$file; done
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f core *.a *.o *.gz *.so
|
||||||
|
Index: multipath-tools-090724/libmultipath/prioritizers/Makefile
|
||||||
|
===================================================================
|
||||||
|
--- multipath-tools-090724.orig/libmultipath/prioritizers/Makefile
|
||||||
|
+++ multipath-tools-090724/libmultipath/prioritizers/Makefile
|
||||||
|
@@ -28,7 +28,7 @@ install: $(LIBS)
|
||||||
|
$(INSTALL_PROGRAM) -m 755 libprio*.so $(DESTDIR)$(libdir)
|
||||||
|
|
||||||
|
uninstall:
|
||||||
|
- rm -f $(DESTDIR)$(libdir)/libprio*.so
|
||||||
|
+ for file in $(LIBS); do rm -f $(DESTDIR)$(libdir)/$$file; done
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f core *.a *.o *.gz *.so
|
Loading…
Reference in New Issue
Block a user