device-mapper-multipath/0033-RH-dont-disable-libdm-failback-for-sync-case.patch
Benjamin Marzinski 72b7e4109a 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
2012-12-17 09:10:34 -06:00

112 lines
3.7 KiB
Diff

---
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;