72b7e4109a
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
112 lines
3.7 KiB
Diff
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;
|