64 lines
1.9 KiB
Diff
64 lines
1.9 KiB
Diff
|
---
|
||
|
libmultipath/configure.c | 11 +++++++++++
|
||
|
libmultipath/configure.h | 1 +
|
||
|
libmultipath/devmapper.c | 3 +--
|
||
|
3 files changed, 13 insertions(+), 2 deletions(-)
|
||
|
|
||
|
Index: multipath-tools-130222/libmultipath/configure.c
|
||
|
===================================================================
|
||
|
--- multipath-tools-130222.orig/libmultipath/configure.c
|
||
|
+++ multipath-tools-130222/libmultipath/configure.c
|
||
|
@@ -394,6 +394,8 @@ select_action (struct multipath * mpp, v
|
||
|
cmpp->alias, mpp->alias);
|
||
|
strncpy(mpp->alias_old, cmpp->alias, WWID_SIZE);
|
||
|
mpp->action = ACT_RENAME;
|
||
|
+ if (force_reload)
|
||
|
+ mpp->action = ACT_RENAME2;
|
||
|
return;
|
||
|
}
|
||
|
mpp->action = ACT_CREATE;
|
||
|
@@ -632,6 +634,15 @@ domap (struct multipath * mpp, char * pa
|
||
|
r = dm_rename(mpp->alias_old, mpp->alias);
|
||
|
break;
|
||
|
|
||
|
+ case ACT_RENAME2:
|
||
|
+ r = dm_rename(mpp->alias_old, mpp->alias);
|
||
|
+ if (r) {
|
||
|
+ r = dm_addmap_reload(mpp, params);
|
||
|
+ if (r)
|
||
|
+ r = dm_simplecmd_noflush(DM_DEVICE_RESUME, mpp->alias, MPATH_UDEV_RELOAD_FLAG);
|
||
|
+ }
|
||
|
+ break;
|
||
|
+
|
||
|
default:
|
||
|
break;
|
||
|
}
|
||
|
Index: multipath-tools-130222/libmultipath/configure.h
|
||
|
===================================================================
|
||
|
--- multipath-tools-130222.orig/libmultipath/configure.h
|
||
|
+++ multipath-tools-130222/libmultipath/configure.h
|
||
|
@@ -18,6 +18,7 @@ enum actions {
|
||
|
ACT_RENAME,
|
||
|
ACT_CREATE,
|
||
|
ACT_RESIZE,
|
||
|
+ ACT_RENAME2,
|
||
|
};
|
||
|
|
||
|
#define FLUSH_ONE 1
|
||
|
Index: multipath-tools-130222/libmultipath/devmapper.c
|
||
|
===================================================================
|
||
|
--- multipath-tools-130222.orig/libmultipath/devmapper.c
|
||
|
+++ multipath-tools-130222/libmultipath/devmapper.c
|
||
|
@@ -565,10 +565,9 @@ dm_dev_t (const char * mapname, char * d
|
||
|
if (!dm_task_run(dmt))
|
||
|
goto out;
|
||
|
|
||
|
- if (!dm_task_get_info(dmt, &info))
|
||
|
+ if (!dm_task_get_info(dmt, &info) || !info.exists)
|
||
|
goto out;
|
||
|
|
||
|
- r = info.open_count;
|
||
|
if (snprintf(dev_t, len, "%i:%i", info.major, info.minor) > len)
|
||
|
goto out;
|
||
|
|