From 765b6859467587798b2f96ad85665c13fd8f03ed Mon Sep 17 00:00:00 2001 From: Benjamin Marzinski Date: Fri, 26 Sep 2008 23:28:36 +0000 Subject: [PATCH] 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 --- binding_error.patch | 13 +++++++ config_space_fix.patch | 6 ++-- device-mapper-multipath.spec | 50 +++++++++++++++----------- directio_fix.patch | 21 ----------- directio_message_cleanup.patch | 15 ++++++++ linking_change.patch | 47 ++++++++++++++++-------- multipath_rules.patch | 18 +++++----- redhatification.patch | 66 +++++++++++++++++----------------- static_libaio.patch | 22 ------------ uevent_fix.patch | 8 ++--- 10 files changed, 138 insertions(+), 128 deletions(-) create mode 100644 binding_error.patch delete mode 100644 directio_fix.patch create mode 100644 directio_message_cleanup.patch delete mode 100644 static_libaio.patch 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) {