You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.9 KiB
63 lines
1.9 KiB
--- |
|
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; |
|
|
|
|