diff --git a/binding_error.patch b/binding_error.patch new file mode 100644 index 0000000..abd9811 --- /dev/null +++ b/binding_error.patch @@ -0,0 +1,13 @@ +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", diff --git a/config_space_fix.patch b/config_space_fix.patch index 25aca7a..c8f4b4b 100644 --- a/config_space_fix.patch +++ b/config_space_fix.patch @@ -7,14 +7,14 @@ Index: multipath-tools/libmultipath/parser.c else in_string = 1; + } else if (!in_string && (*cp == '{' || *cp == '}')) { -+ cp++; + token = MALLOC(2); -+ + + if (!token) + goto out; - ++ + *(token) = *cp; + *(token + 1) = '\0'; ++ cp++; } else { while ((in_string || (!isspace((int) *cp) && isascii((int) *cp) && diff --git a/device-mapper-multipath.spec b/device-mapper-multipath.spec index c6d6f3b..128615f 100644 --- a/device-mapper-multipath.spec +++ b/device-mapper-multipath.spec @@ -1,7 +1,7 @@ Summary: Tools to manage multipath devices using device-mapper Name: device-mapper-multipath Version: 0.4.8 -Release: 6%{?dist} +Release: 7%{?dist} License: GPL+ Group: System Environment/Base URL: http://christophe.varoqui.free.fr/ @@ -9,16 +9,16 @@ Source0: multipath-tools-080804.tgz Patch0: linking_change.patch Patch1: uevent_fix.patch Patch2: sparc64fix.patch -Patch3: directio_fix.patch -Patch4: config_files.patch -Patch5: redhatification.patch -Patch6: mpath_wait.patch -Patch7: multipath_rules.patch -Patch8: cciss_id.patch -Patch9: scsi_id_change.patch -Patch10: static_libaio.patch -Patch11: config_space_fix.patch -Patch12: fix_devt.patch +Patch3: config_files.patch +Patch4: redhatification.patch +Patch5: mpath_wait.patch +Patch6: multipath_rules.patch +Patch7: cciss_id.patch +Patch8: scsi_id_change.patch +Patch9: config_space_fix.patch +Patch10: fix_devt.patch +Patch11: directio_message_cleanup.patch +Patch12: binding_error.patch Requires: kpartx = %{version}-%{release} BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) Requires(post): chkconfig @@ -48,16 +48,16 @@ kpartx manages partition creation and removal for device-mapper devices. %patch0 -p1 -b .linking_change %patch1 -p1 -b .uevent_fix %patch2 -p1 -b .sparc64fix -%patch3 -p1 -b .directio_fix -%patch4 -p1 -b .config_files -%patch5 -p1 -b .redhatification -%patch6 -p1 -b .mpath_wait -%patch7 -p1 -b .multipath_rules -%patch8 -p1 -b .cciss_id -%patch9 -p1 -b .scsi_id_change -%patch10 -p1 -b .static_libaio -%patch11 -p1 -b .config_space_fix -%patch12 -p1 -b .fix_devt +%patch3 -p1 -b .config_files +%patch4 -p1 -b .redhatification +%patch5 -p1 -b .mpath_wait +%patch6 -p1 -b .multipath_rules +%patch7 -p1 -b .cciss_id +%patch8 -p1 -b .scsi_id_change +%patch9 -p1 -b .config_space_fix +%patch10 -p1 -b .fix_devt +%patch11 -p1 -b .directio_message +%patch12 -p1 -b .binding_error %build make %{?_smp_mflags} DESTDIR=$RPM_BUILD_ROOT @@ -109,6 +109,14 @@ fi %{_mandir}/man8/kpartx.8.gz %changelog +* Fri Sep 26 2008 Benjamin Marzinski 0.4.8-7 +- Since libaio is now in /lib, not /usr/lib, multipath no longer needs to + statically link against it. Fixed an error with binding file and WWIDs + that include spaces. Cleaned up the messages from the directio checker + function. Fixed the udev rules. Fixed a regression in multipath.conf + parsing +- Fixed 457530, 457589 + * Wed Aug 20 2008 Benjamin Marzinski 0.4.8-6 - Updated to latest upstream 0.4.8 code: multipath-tools-080804.tgz (git commit id: eb87cbd0df8adf61d1c74c025f7326d833350f78) diff --git a/directio_fix.patch b/directio_fix.patch deleted file mode 100644 index 03f1d76..0000000 --- a/directio_fix.patch +++ /dev/null @@ -1,21 +0,0 @@ -Index: multipath-tools-temp/libmultipath/checkers/directio.c -=================================================================== ---- multipath-tools-temp.orig/libmultipath/checkers/directio.c -+++ multipath-tools-temp/libmultipath/checkers/directio.c -@@ -15,6 +15,7 @@ - #include - #include - #include -+#include - - #include "checkers.h" - #include "../libmultipath/debug.h" -@@ -148,7 +149,7 @@ check_state(int fd, struct directio_cont - } - ct->running++; - -- r = io_getevents(ct->ioctx, 1L, 1L, &event, &timeout); -+ r = syscall(SYS_io_getevents, ct->ioctx, 1L, 1L, &event, &timeout); - LOG(3, "async io getevents returns %li (errno=%s)", r, strerror(errno)); - - if (r < 1L) { diff --git a/directio_message_cleanup.patch b/directio_message_cleanup.patch new file mode 100644 index 0000000..c215996 --- /dev/null +++ b/directio_message_cleanup.patch @@ -0,0 +1,15 @@ +Index: multipath-tools/libmultipath/checkers/directio.c +=================================================================== +--- multipath-tools.orig/libmultipath/checkers/directio.c ++++ multipath-tools/libmultipath/checkers/directio.c +@@ -148,8 +148,9 @@ check_state(int fd, struct directio_cont + } + ct->running++; + ++ errno = 0; + r = io_getevents(ct->ioctx, 1L, 1L, &event, &timeout); +- LOG(3, "async io getevents returns %li (errno=%s)", r, strerror(errno)); ++ LOG(3, "async io_getevents returns %li (%s)", r, strerror(errno)); + + if (r < 1L) { + if (ct->running > ASYNC_TIMEOUT_SEC || sync) { diff --git a/linking_change.patch b/linking_change.patch index 9a8a142..887504a 100644 --- a/linking_change.patch +++ b/linking_change.patch @@ -1,7 +1,7 @@ -Index: multipath-tools-080519/libmultipath/Makefile +Index: multipath-tools/libmultipath/Makefile =================================================================== ---- multipath-tools-080519.orig/libmultipath/Makefile -+++ multipath-tools-080519/libmultipath/Makefile +--- multipath-tools.orig/libmultipath/Makefile ++++ multipath-tools/libmultipath/Makefile @@ -23,14 +23,15 @@ endif all: $(LIBS) @@ -21,29 +21,48 @@ Index: multipath-tools-080519/libmultipath/Makefile clean: rm -f core *.a *.o *.gz *.so -Index: multipath-tools-080519/multipath/Makefile +Index: multipath-tools/multipath/Makefile =================================================================== ---- multipath-tools-080519.orig/multipath/Makefile -+++ multipath-tools-080519/multipath/Makefile -@@ -6,7 +6,7 @@ include ../Makefile.inc +--- multipath-tools.orig/multipath/Makefile ++++ multipath-tools/multipath/Makefile +@@ -6,9 +6,8 @@ include ../Makefile.inc OBJS = main.o -CFLAGS += -I$(multipathdir) -Wl,-rpath,$(libdir) +-LDFLAGS += -lpthread -ldevmapper -laio -ldl \ +- -lmultipath -L$(multipathdir) +CFLAGS += -I$(multipathdir) - LDFLAGS += -lpthread -ldevmapper -laio -ldl \ - -lmultipath -L$(multipathdir) ++LDFLAGS += -lpthread -ldevmapper -ldl -lmultipath -L$(multipathdir) -Index: multipath-tools-080519/multipathd/Makefile + EXEC = multipath + +Index: multipath-tools/multipathd/Makefile =================================================================== ---- multipath-tools-080519.orig/multipathd/Makefile -+++ multipath-tools-080519/multipathd/Makefile -@@ -5,7 +5,7 @@ include ../Makefile.inc +--- multipath-tools.orig/multipathd/Makefile ++++ multipath-tools/multipathd/Makefile +@@ -5,8 +5,8 @@ include ../Makefile.inc # # basic flags setting # -CFLAGS += -I$(multipathdir) -Wl,-rpath,$(libdir) +-LDFLAGS += -lpthread -ldevmapper -lreadline -lncurses -laio -ldl \ +CFLAGS += -I$(multipathdir) - LDFLAGS += -lpthread -ldevmapper -lreadline -lncurses -laio -ldl \ ++LDFLAGS += -lpthread -ldevmapper -lreadline -lncurses -ldl \ -lmultipath -L$(multipathdir) + # +Index: multipath-tools/libmultipath/checkers/Makefile +=================================================================== +--- multipath-tools.orig/libmultipath/checkers/Makefile ++++ multipath-tools/libmultipath/checkers/Makefile +@@ -17,6 +17,9 @@ CFLAGS += -I.. + + all: $(LIBS) + ++libcheckdirectio.so: libsg.o directio.o ++ $(CC) $(SHARED_FLAGS) -o $@ $^ -laio ++ + libcheck%.so: libsg.o %.o + $(CC) $(SHARED_FLAGS) -o $@ $^ + diff --git a/multipath_rules.patch b/multipath_rules.patch index ea545a2..56e0bb9 100644 --- a/multipath_rules.patch +++ b/multipath_rules.patch @@ -1,7 +1,7 @@ -Index: multipath-tools-080515/multipath/Makefile +Index: multipath-tools/multipath/Makefile =================================================================== ---- multipath-tools-080515.orig/multipath/Makefile -+++ multipath-tools-080515/multipath/Makefile +--- multipath-tools.orig/multipath/Makefile ++++ multipath-tools/multipath/Makefile @@ -23,7 +23,7 @@ install: $(INSTALL_PROGRAM) -d $(DESTDIR)$(bindir) $(INSTALL_PROGRAM) -m 755 $(EXEC) mpath_wait $(DESTDIR)$(bindir)/ @@ -20,24 +20,22 @@ Index: multipath-tools-080515/multipath/Makefile rm $(DESTDIR)$(bindir)/$(EXEC) rm $(DESTDIR)$(bindir)/mpath_wait rm $(DESTDIR)$(mandir)/$(EXEC).8.gz -Index: multipath-tools-080515/multipath/multipath.rules +Index: multipath-tools/multipath/multipath.rules =================================================================== ---- multipath-tools-080515.orig/multipath/multipath.rules -+++ multipath-tools-080515/multipath/multipath.rules -@@ -1,7 +1,9 @@ +--- multipath-tools.orig/multipath/multipath.rules ++++ multipath-tools/multipath/multipath.rules +@@ -1,7 +1,8 @@ -# -# udev rules for multipathing. -# The persistent symlinks are created with the kpartx rules -# - -# socket for uevents --RUN+="socket:/org/kernel/dm/multipath_event" +# multipath wants the devmaps presented as meaninglful device names +# so name them after their devmap name +SUBSYSTEM!="block", GOTO="end_mpath" -+KERNEL!="dm-[0-9]*", ACTION=="add", PROGRAM=="/bin/bash -c '/sbin/lsmod | /bin/grep ^dm_multipath'", RUN+="/sbin/multipath -v0 %M:%m" + RUN+="socket:/org/kernel/dm/multipath_event" +KERNEL!="dm-[0-9]*", GOTO="end_mpath" +PROGRAM!="/sbin/mpath_wait %M %m", GOTO="end_mpath" +ACTION=="add", RUN+="/sbin/dmsetup ls --target multipath --exec '/sbin/kpartx -a -p p' -j %M -m %m" -+PROGRAM!="/bin/bash -c '/sbin/dmsetup info -c --noheadings -j %M -m %m | /bin/grep -q .*:.*:.*:.*:.*:.*:.*:part[0-9]*-mpath-'", GOTO="end_mpath" +LABEL="end_mpath" diff --git a/redhatification.patch b/redhatification.patch index 285bc54..455c291 100644 --- a/redhatification.patch +++ b/redhatification.patch @@ -1,17 +1,17 @@ -Index: multipath-tools-080519/libmultipath/defaults.h +Index: multipath-tools/libmultipath/defaults.h =================================================================== ---- multipath-tools-080519.orig/libmultipath/defaults.h -+++ multipath-tools-080519/libmultipath/defaults.h +--- multipath-tools.orig/libmultipath/defaults.h ++++ multipath-tools/libmultipath/defaults.h @@ -1,4 +1,4 @@ -#define DEFAULT_GETUID "/lib/udev/scsi_id -g -u -s /block/%n" +#define DEFAULT_GETUID "/sbin/scsi_id -g -u -s /block/%n" #define DEFAULT_UDEVDIR "/dev" #define DEFAULT_MULTIPATHDIR "/lib/multipath" #define DEFAULT_SELECTOR "round-robin 0" -Index: multipath-tools-080519/libmultipath/hwtable.c +Index: multipath-tools/libmultipath/hwtable.c =================================================================== ---- multipath-tools-080519.orig/libmultipath/hwtable.c -+++ multipath-tools-080519/libmultipath/hwtable.c +--- multipath-tools.orig/libmultipath/hwtable.c ++++ multipath-tools/libmultipath/hwtable.c @@ -172,7 +172,7 @@ static struct hwentry default_hw[] = { /* HP Smart Array */ .vendor = "HP", @@ -39,7 +39,7 @@ Index: multipath-tools-080519/libmultipath/hwtable.c .features = "1 queue_if_no_path", .hwhandler = DEFAULT_HWHANDLER, .selector = DEFAULT_SELECTOR, -@@ -705,6 +705,22 @@ static struct hwentry default_hw[] = { +@@ -722,6 +722,22 @@ static struct hwentry default_hw[] = { .checker_name = RDAC, .prio_name = PRIO_RDAC, }, @@ -62,10 +62,10 @@ Index: multipath-tools-080519/libmultipath/hwtable.c /* * EOL */ -Index: multipath-tools-080519/multipath.conf.annotated +Index: multipath-tools/multipath.conf.annotated =================================================================== ---- multipath-tools-080519.orig/multipath.conf.annotated -+++ multipath-tools-080519/multipath.conf.annotated +--- multipath-tools.orig/multipath.conf.annotated ++++ multipath-tools/multipath.conf.annotated @@ -55,9 +55,9 @@ # # scope : multipath # # desc : the default program and args to callout to obtain a unique @@ -87,10 +87,10 @@ Index: multipath-tools-080519/multipath.conf.annotated # # # # # name : path_selector -Index: multipath-tools-080519/multipath.conf.defaults +Index: multipath-tools/multipath.conf.defaults =================================================================== ---- multipath-tools-080519.orig/multipath.conf.defaults -+++ multipath-tools-080519/multipath.conf.defaults +--- multipath-tools.orig/multipath.conf.defaults ++++ multipath-tools/multipath.conf.defaults @@ -6,7 +6,7 @@ # polling_interval 5 # selector "round-robin 0" @@ -452,10 +452,10 @@ Index: multipath-tools-080519/multipath.conf.defaults +# prio rdac +# } #} -Index: multipath-tools-080519/multipath.conf.synthetic +Index: multipath-tools/multipath.conf.synthetic =================================================================== ---- multipath-tools-080519.orig/multipath.conf.synthetic -+++ multipath-tools-080519/multipath.conf.synthetic +--- multipath-tools.orig/multipath.conf.synthetic ++++ multipath-tools/multipath.conf.synthetic @@ -7,7 +7,7 @@ # polling_interval 10 # selector "round-robin 0" @@ -474,10 +474,10 @@ Index: multipath-tools-080519/multipath.conf.synthetic # path_checker directio # path_selector "round-robin 0" # hardware_handler "0" -Index: multipath-tools-080519/Makefile.inc +Index: multipath-tools/Makefile.inc =================================================================== ---- multipath-tools-080519.orig/Makefile.inc -+++ multipath-tools-080519/Makefile.inc +--- multipath-tools.orig/Makefile.inc ++++ multipath-tools/Makefile.inc @@ -20,7 +20,7 @@ libudevdir = ${prefix}/lib/udev multipathdir = $(TOPDIR)/libmultipath mandir = $(prefix)/usr/share/man/man8 @@ -487,10 +487,10 @@ Index: multipath-tools-080519/Makefile.inc libdir = $(prefix)/lib/multipath GZIP = /bin/gzip -9 -c -Index: multipath-tools-080519/multipathd/Makefile +Index: multipath-tools/multipathd/Makefile =================================================================== ---- multipath-tools-080519.orig/multipathd/Makefile -+++ multipath-tools-080519/multipathd/Makefile +--- multipath-tools.orig/multipathd/Makefile ++++ multipath-tools/multipathd/Makefile @@ -35,6 +35,7 @@ install: $(INSTALL_PROGRAM) -d $(DESTDIR)$(bindir) $(INSTALL_PROGRAM) -m 755 $(EXEC) $(DESTDIR)$(bindir) @@ -499,10 +499,10 @@ Index: multipath-tools-080519/multipathd/Makefile $(INSTALL_PROGRAM) -d $(DESTDIR)$(mandir) $(INSTALL_PROGRAM) -m 644 $(EXEC).8.gz $(DESTDIR)$(mandir) -Index: multipath-tools-080519/multipathd/multipathd.init.redhat +Index: multipath-tools/multipathd/multipathd.init.redhat =================================================================== ---- multipath-tools-080519.orig/multipathd/multipathd.init.redhat -+++ multipath-tools-080519/multipathd/multipathd.init.redhat +--- multipath-tools.orig/multipathd/multipathd.init.redhat ++++ multipath-tools/multipathd/multipathd.init.redhat @@ -1,13 +1,9 @@ #!/bin/bash - @@ -561,10 +561,10 @@ Index: multipath-tools-080519/multipathd/multipathd.init.redhat esac exit $RETVAL -Index: multipath-tools-080519/multipath/Makefile +Index: multipath-tools/multipath/Makefile =================================================================== ---- multipath-tools-080519.orig/multipath/Makefile -+++ multipath-tools-080519/multipath/Makefile +--- multipath-tools.orig/multipath/Makefile ++++ multipath-tools/multipath/Makefile @@ -28,6 +28,10 @@ install: $(INSTALL_PROGRAM) -m 644 $(EXEC).8.gz $(DESTDIR)$(mandir) $(INSTALL_PROGRAM) -d $(DESTDIR)$(man5dir) @@ -576,10 +576,10 @@ Index: multipath-tools-080519/multipath/Makefile uninstall: rm $(DESTDIR)/etc/udev/rules.d/multipath.rules -Index: multipath-tools-080519/multipath/multipath.conf.redhat +Index: multipath-tools/multipath/multipath.conf.redhat =================================================================== --- /dev/null -+++ multipath-tools-080519/multipath/multipath.conf.redhat ++++ multipath-tools/multipath/multipath.conf.redhat @@ -0,0 +1,97 @@ +# This is a basic configuration file with some examples, for device mapper +# multipath. @@ -678,10 +678,10 @@ Index: multipath-tools-080519/multipath/multipath.conf.redhat +# path_grouping_policy multibus +# } +#} -Index: multipath-tools-080519/kpartx/Makefile +Index: multipath-tools/kpartx/Makefile =================================================================== ---- multipath-tools-080519.orig/kpartx/Makefile -+++ multipath-tools-080519/kpartx/Makefile +--- multipath-tools.orig/kpartx/Makefile ++++ multipath-tools/kpartx/Makefile @@ -20,10 +20,10 @@ $(EXEC): $(OBJS) install: $(EXEC) $(EXEC).8 $(INSTALL_PROGRAM) -d $(DESTDIR)$(bindir) diff --git a/static_libaio.patch b/static_libaio.patch deleted file mode 100644 index 43c80e3..0000000 --- a/static_libaio.patch +++ /dev/null @@ -1,22 +0,0 @@ -Index: multipath-tools/multipath/Makefile -=================================================================== ---- multipath-tools.orig/multipath/Makefile -+++ multipath-tools/multipath/Makefile -@@ -7,7 +7,7 @@ include ../Makefile.inc - OBJS = main.o - - CFLAGS += -I$(multipathdir) --LDFLAGS += -lpthread -ldevmapper -laio -ldl \ -+LDFLAGS += -lpthread -ldevmapper -Wl,-Bstatic,-laio,-Bdynamic -ldl \ - -lmultipath -L$(multipathdir) - - EXEC = multipath -@@ -15,7 +15,7 @@ EXEC = multipath - all: $(EXEC) - - $(EXEC): $(OBJS) -- $(CC) $(CFLAGS) $(OBJS) -o $(EXEC) $(LDFLAGS) -+ $(CC) $(CFLAGS) $(OBJS) -o $(EXEC) -Wl,-undefined=io_submit,-undefined=io_getevents,-undefined=io_destroy,-undefined=io_setup $(LDFLAGS) -rdynamic - $(GZIP) $(EXEC).8 > $(EXEC).8.gz - $(GZIP) $(EXEC).conf.5 > $(EXEC).conf.5.gz - diff --git a/uevent_fix.patch b/uevent_fix.patch index 39c424d..78c47e8 100644 --- a/uevent_fix.patch +++ b/uevent_fix.patch @@ -1,8 +1,8 @@ -Index: multipath-tools-080515/multipathd/main.c +Index: multipath-tools/multipathd/main.c =================================================================== ---- multipath-tools-080515.orig/multipathd/main.c -+++ multipath-tools-080515/multipathd/main.c -@@ -619,14 +619,20 @@ uxsock_trigger (char * str, char ** repl +--- multipath-tools.orig/multipathd/main.c ++++ multipath-tools/multipathd/main.c +@@ -602,14 +602,20 @@ uxsock_trigger (char * str, char ** repl static int uev_discard(char * devpath) {