From 72b7e4109aadc6d087b7df67fc590c33b223b17f Mon Sep 17 00:00:00 2001 From: Benjamin Marzinski Date: Mon, 17 Dec 2012 09:10:34 -0600 Subject: [PATCH] device-mapper-multipath-0.4.9-41 Add 0033-RH-dont-disable-libdm-failback-for-sync-case.patch * make kpartx -s and multipath use libdm failback device creation, so that they work in environments without udev --- ...disable-libdm-failback-for-sync-case.patch | 111 ++++++++++++++++++ device-mapper-multipath.spec | 9 +- 2 files changed, 119 insertions(+), 1 deletion(-) create mode 100644 0033-RH-dont-disable-libdm-failback-for-sync-case.patch diff --git a/0033-RH-dont-disable-libdm-failback-for-sync-case.patch b/0033-RH-dont-disable-libdm-failback-for-sync-case.patch new file mode 100644 index 0000000..7bea525 --- /dev/null +++ b/0033-RH-dont-disable-libdm-failback-for-sync-case.patch @@ -0,0 +1,111 @@ +--- + kpartx/devmapper.c | 4 ++-- + kpartx/devmapper.h | 2 ++ + kpartx/kpartx.c | 6 +++--- + libmultipath/devmapper.c | 6 +++--- + 4 files changed, 10 insertions(+), 8 deletions(-) + +Index: multipath-tools-120821/kpartx/devmapper.c +=================================================================== +--- multipath-tools-120821.orig/kpartx/devmapper.c ++++ multipath-tools-120821/kpartx/devmapper.c +@@ -78,7 +78,7 @@ dm_simplecmd (int task, const char *name + if (no_flush) + dm_task_no_flush(dmt); + +- if (udev_wait_flag && !dm_task_set_cookie(dmt, cookie, DM_UDEV_DISABLE_LIBRARY_FALLBACK)) ++ if (udev_wait_flag && !dm_task_set_cookie(dmt, cookie, (udev_sync)? 0 : DM_UDEV_DISABLE_LIBRARY_FALLBACK)) + goto out; + r = dm_task_run(dmt); + +@@ -128,7 +128,7 @@ dm_addmap (int task, const char *name, c + + dm_task_no_open_count(dmt); + +- if (task == DM_DEVICE_CREATE && !dm_task_set_cookie(dmt, cookie, DM_UDEV_DISABLE_LIBRARY_FALLBACK)) ++ if (task == DM_DEVICE_CREATE && !dm_task_set_cookie(dmt, cookie, (udev_sync)? 0 : DM_UDEV_DISABLE_LIBRARY_FALLBACK)) + goto addout; + r = dm_task_run (dmt); + +Index: multipath-tools-120821/kpartx/devmapper.h +=================================================================== +--- multipath-tools-120821.orig/kpartx/devmapper.h ++++ multipath-tools-120821/kpartx/devmapper.h +@@ -2,6 +2,8 @@ + #define MINOR(dev) ((dev & 0xff) | ((dev >> 12) & 0xfff00)) + #define MKDEV(ma,mi) ((mi & 0xff) | (ma << 8) | ((mi & ~0xff) << 12)) + ++extern int udev_sync; ++ + int dm_prereq (char *, int, int, int); + int dm_simplecmd (int, const char *, int, uint32_t *); + int dm_addmap (int, const char *, const char *, const char *, uint64_t, +Index: multipath-tools-120821/kpartx/kpartx.c +=================================================================== +--- multipath-tools-120821.orig/kpartx/kpartx.c ++++ multipath-tools-120821/kpartx/kpartx.c +@@ -56,6 +56,7 @@ struct pt { + } pts[MAXTYPES]; + + int ptct = 0; ++int udev_sync = 0; + + static void + addpts(char *t, ptreader f) +@@ -205,7 +206,6 @@ main(int argc, char **argv){ + int loopro = 0; + int hotplug = 0; + int loopcreated = 0; +- int sync = 0; + struct stat buf; + uint32_t cookie = 0; + +@@ -267,7 +267,7 @@ main(int argc, char **argv){ + what = DELETE; + break; + case 's': +- sync = 1; ++ udev_sync = 1; + break; + case 'u': + what = UPDATE; +@@ -278,7 +278,7 @@ main(int argc, char **argv){ + } + + #ifdef LIBDM_API_COOKIE +- if (!sync) ++ if (!udev_sync) + dm_udev_set_sync_support(0); + #endif + +Index: multipath-tools-120821/libmultipath/devmapper.c +=================================================================== +--- multipath-tools-120821.orig/libmultipath/devmapper.c ++++ multipath-tools-120821/libmultipath/devmapper.c +@@ -219,7 +219,7 @@ dm_simplecmd (int task, const char *name + dm_task_no_flush(dmt); /* for DM_DEVICE_SUSPEND/RESUME */ + #endif + +- if (udev_wait_flag && !dm_task_set_cookie(dmt, &conf->cookie, DM_UDEV_DISABLE_LIBRARY_FALLBACK)) ++ if (udev_wait_flag && !dm_task_set_cookie(dmt, &conf->cookie, (conf->daemon)? DM_UDEV_DISABLE_LIBRARY_FALLBACK : 0)) + goto out; + r = dm_task_run (dmt); + +@@ -284,7 +284,7 @@ dm_addmap (int task, const char *target, + dm_task_no_open_count(dmt); + + if (task == DM_DEVICE_CREATE && +- !dm_task_set_cookie(dmt, &conf->cookie, DM_UDEV_DISABLE_LIBRARY_FALLBACK)) ++ !dm_task_set_cookie(dmt, &conf->cookie, (conf->daemon)? DM_UDEV_DISABLE_LIBRARY_FALLBACK : 0)) + goto freeout; + r = dm_task_run (dmt); + +@@ -1244,7 +1244,7 @@ dm_rename (char * old, char * new) + + dm_task_no_open_count(dmt); + +- if (!dm_task_set_cookie(dmt, &conf->cookie, DM_UDEV_DISABLE_LIBRARY_FALLBACK)) ++ if (!dm_task_set_cookie(dmt, &conf->cookie, (conf->daemon)? DM_UDEV_DISABLE_LIBRARY_FALLBACK : 0)) + goto out; + if (!dm_task_run(dmt)) + goto out; diff --git a/device-mapper-multipath.spec b/device-mapper-multipath.spec index fa7b355..2bf6f15 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.9 -Release: 40%{?dist} +Release: 41%{?dist} License: GPL+ Group: System Environment/Base URL: http://christophe.varoqui.free.fr/ @@ -40,6 +40,7 @@ Patch0029: 0029-RH-kpartx-retry.patch Patch0030: 0030-RH-early-blacklist.patch Patch0031: 0031-RHBZ-882060-fix-null-strncmp.patch Patch0032: 0032-RH-make-path-fd-readonly.patch +Patch0033: 0033-RH-dont-disable-libdm-failback-for-sync-case.patch # runtime Requires: %{name}-libs = %{version}-%{release} @@ -124,6 +125,7 @@ kpartx manages partition creation and removal for device-mapper devices. %patch0030 -p1 %patch0031 -p1 %patch0032 -p1 +%patch0033 -p1 cp %{SOURCE1} . %build @@ -215,6 +217,11 @@ bin/systemctl --no-reload enable multipathd.service >/dev/null 2>&1 ||: %{_mandir}/man8/kpartx.8.gz %changelog +* Mon Dec 17 2012 Benjamin Marzinski 0.4.9-41 +- Add 0033-RH-dont-disable-libdm-failback-for-sync-case.patch + * make kpartx -s and multipath use libdm failback device creation, so + that they work in environments without udev + * Fri Nov 30 2012 Benjamin Marzinski 0.4.9-40 - Add 0032-RH-make-path-fd-readonly.patch * revert change made when adding persistent reservations, so that path fds