import device-mapper-multipath-0.8.4-37.el8
This commit is contained in:
parent
1eb9d35df4
commit
2ba0a39dca
@ -0,0 +1,45 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
Date: Tue, 31 Jan 2023 09:58:55 -0600
|
||||||
|
Subject: [PATCH] libmultipath: select resize action even if reload is forced
|
||||||
|
|
||||||
|
The ACT_RESIZE action is the same as the ACT_RELOAD action, except that
|
||||||
|
it flushes outstanding IO because the device size is changing and
|
||||||
|
the new size might be too small for some of the outstanding IO. If we've
|
||||||
|
detected a size change, and a forced reload is requested, we still need
|
||||||
|
to flush the IO because the reload will change the device size.
|
||||||
|
|
||||||
|
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
---
|
||||||
|
libmultipath/configure.c | 13 +++++++------
|
||||||
|
1 file changed, 7 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libmultipath/configure.c b/libmultipath/configure.c
|
||||||
|
index 6e06fea2..ecf24f95 100644
|
||||||
|
--- a/libmultipath/configure.c
|
||||||
|
+++ b/libmultipath/configure.c
|
||||||
|
@@ -734,17 +734,18 @@ select_action (struct multipath * mpp, vector curmp, int force_reload)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (force_reload) {
|
||||||
|
+ if (cmpp->size != mpp->size) {
|
||||||
|
mpp->force_udev_reload = 1;
|
||||||
|
- mpp->action = ACT_RELOAD;
|
||||||
|
- condlog(3, "%s: set ACT_RELOAD (forced by user)",
|
||||||
|
+ mpp->action = ACT_RESIZE;
|
||||||
|
+ condlog(3, "%s: set ACT_RESIZE (size change)",
|
||||||
|
mpp->alias);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
- if (cmpp->size != mpp->size) {
|
||||||
|
+
|
||||||
|
+ if (force_reload) {
|
||||||
|
mpp->force_udev_reload = 1;
|
||||||
|
- mpp->action = ACT_RESIZE;
|
||||||
|
- condlog(3, "%s: set ACT_RESIZE (size change)",
|
||||||
|
+ mpp->action = ACT_RELOAD;
|
||||||
|
+ condlog(3, "%s: set ACT_RELOAD (forced by user)",
|
||||||
|
mpp->alias);
|
||||||
|
return;
|
||||||
|
}
|
@ -0,0 +1,67 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
Date: Tue, 31 Jan 2023 10:35:10 -0600
|
||||||
|
Subject: [PATCH] libmultipath: cleanup ACT_CREATE code in select_action
|
||||||
|
|
||||||
|
Combine the two separate blocks that set ACT_CREATE into one.
|
||||||
|
|
||||||
|
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
---
|
||||||
|
libmultipath/configure.c | 38 +++++++++++++++++---------------------
|
||||||
|
1 file changed, 17 insertions(+), 21 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libmultipath/configure.c b/libmultipath/configure.c
|
||||||
|
index ecf24f95..303d2380 100644
|
||||||
|
--- a/libmultipath/configure.c
|
||||||
|
+++ b/libmultipath/configure.c
|
||||||
|
@@ -693,33 +693,29 @@ select_action (struct multipath * mpp, vector curmp, int force_reload)
|
||||||
|
cmpp = find_mp_by_wwid(curmp, mpp->wwid);
|
||||||
|
cmpp_by_name = find_mp_by_alias(curmp, mpp->alias);
|
||||||
|
|
||||||
|
- if (!cmpp_by_name) {
|
||||||
|
- if (cmpp) {
|
||||||
|
- condlog(2, "%s: rename %s to %s", mpp->wwid,
|
||||||
|
- cmpp->alias, mpp->alias);
|
||||||
|
- strlcpy(mpp->alias_old, cmpp->alias, WWID_SIZE);
|
||||||
|
- mpp->action = ACT_RENAME;
|
||||||
|
- if (force_reload) {
|
||||||
|
- mpp->force_udev_reload = 1;
|
||||||
|
- mpp->action = ACT_FORCERENAME;
|
||||||
|
- }
|
||||||
|
- return;
|
||||||
|
+ if (!cmpp) {
|
||||||
|
+ if (cmpp_by_name) {
|
||||||
|
+ condlog(1, "%s: can't use alias \"%s\" used by %s, falling back to WWID",
|
||||||
|
+ mpp->wwid, mpp->alias, cmpp_by_name->wwid);
|
||||||
|
+ /* We can do this because wwid wasn't found */
|
||||||
|
+ free(mpp->alias);
|
||||||
|
+ mpp->alias = strdup(mpp->wwid);
|
||||||
|
}
|
||||||
|
mpp->action = ACT_CREATE;
|
||||||
|
- condlog(3, "%s: set ACT_CREATE (map does not exist)",
|
||||||
|
- mpp->alias);
|
||||||
|
+ condlog(3, "%s: set ACT_CREATE (map does not exist%s)",
|
||||||
|
+ mpp->alias, cmpp_by_name ? ", name changed" : "");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (!cmpp) {
|
||||||
|
- condlog(1, "%s: can't use alias \"%s\" used by %s, falling back to WWID",
|
||||||
|
- mpp->wwid, mpp->alias, cmpp_by_name->wwid);
|
||||||
|
- /* We can do this because wwid wasn't found */
|
||||||
|
- free(mpp->alias);
|
||||||
|
- mpp->alias = strdup(mpp->wwid);
|
||||||
|
- mpp->action = ACT_CREATE;
|
||||||
|
- condlog(3, "%s: set ACT_CREATE (map does not exist, name changed)",
|
||||||
|
+ if (!cmpp_by_name) {
|
||||||
|
+ condlog(2, "%s: rename %s to %s", mpp->wwid, cmpp->alias,
|
||||||
|
mpp->alias);
|
||||||
|
+ strlcpy(mpp->alias_old, cmpp->alias, WWID_SIZE);
|
||||||
|
+ mpp->action = ACT_RENAME;
|
||||||
|
+ if (force_reload) {
|
||||||
|
+ mpp->force_udev_reload = 1;
|
||||||
|
+ mpp->action = ACT_FORCERENAME;
|
||||||
|
+ }
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,270 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
Date: Tue, 31 Jan 2023 12:00:31 -0600
|
||||||
|
Subject: [PATCH] libmultipath: keep renames from stopping other multipath
|
||||||
|
actions
|
||||||
|
|
||||||
|
If select_action() is called and a multipath device needs to be renamed,
|
||||||
|
the code currently checks if force_reload is set, and if so, does the
|
||||||
|
reload after the rename. But if force_reload isn't set, only the rename
|
||||||
|
happens, regardless of what other actions are needed. This can happen if
|
||||||
|
multipathd starts up and a device needs both a reload and a rename.
|
||||||
|
|
||||||
|
Make multipath check for resize, reload, and switch pathgroup along with
|
||||||
|
rename, and do both if necessary.
|
||||||
|
|
||||||
|
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
---
|
||||||
|
libmultipath/configure.c | 92 +++++++++++++++++++++-------------------
|
||||||
|
libmultipath/configure.h | 4 +-
|
||||||
|
2 files changed, 51 insertions(+), 45 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libmultipath/configure.c b/libmultipath/configure.c
|
||||||
|
index 303d2380..65a0b208 100644
|
||||||
|
--- a/libmultipath/configure.c
|
||||||
|
+++ b/libmultipath/configure.c
|
||||||
|
@@ -690,6 +690,7 @@ select_action (struct multipath * mpp, vector curmp, int force_reload)
|
||||||
|
struct multipath * cmpp_by_name;
|
||||||
|
char * mpp_feat, * cmpp_feat;
|
||||||
|
|
||||||
|
+ mpp->action = ACT_NOTHING;
|
||||||
|
cmpp = find_mp_by_wwid(curmp, mpp->wwid);
|
||||||
|
cmpp_by_name = find_mp_by_alias(curmp, mpp->alias);
|
||||||
|
|
||||||
|
@@ -712,14 +713,8 @@ select_action (struct multipath * mpp, vector curmp, int force_reload)
|
||||||
|
mpp->alias);
|
||||||
|
strlcpy(mpp->alias_old, cmpp->alias, WWID_SIZE);
|
||||||
|
mpp->action = ACT_RENAME;
|
||||||
|
- if (force_reload) {
|
||||||
|
- mpp->force_udev_reload = 1;
|
||||||
|
- mpp->action = ACT_FORCERENAME;
|
||||||
|
- }
|
||||||
|
- return;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- if (cmpp != cmpp_by_name) {
|
||||||
|
+ /* don't return here. Check for other needed actions */
|
||||||
|
+ } else if (cmpp != cmpp_by_name) {
|
||||||
|
condlog(2, "%s: unable to rename %s to %s (%s is used by %s)",
|
||||||
|
mpp->wwid, cmpp->alias, mpp->alias,
|
||||||
|
mpp->alias, cmpp_by_name->wwid);
|
||||||
|
@@ -727,12 +722,13 @@ select_action (struct multipath * mpp, vector curmp, int force_reload)
|
||||||
|
FREE(mpp->alias);
|
||||||
|
mpp->alias = STRDUP(cmpp->alias);
|
||||||
|
mpp->action = ACT_IMPOSSIBLE;
|
||||||
|
- return;
|
||||||
|
+ /* don't return here. Check for other needed actions */
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cmpp->size != mpp->size) {
|
||||||
|
mpp->force_udev_reload = 1;
|
||||||
|
- mpp->action = ACT_RESIZE;
|
||||||
|
+ mpp->action = mpp->action == ACT_RENAME ? ACT_RESIZE_RENAME :
|
||||||
|
+ ACT_RESIZE;
|
||||||
|
condlog(3, "%s: set ACT_RESIZE (size change)",
|
||||||
|
mpp->alias);
|
||||||
|
return;
|
||||||
|
@@ -740,7 +736,8 @@ select_action (struct multipath * mpp, vector curmp, int force_reload)
|
||||||
|
|
||||||
|
if (force_reload) {
|
||||||
|
mpp->force_udev_reload = 1;
|
||||||
|
- mpp->action = ACT_RELOAD;
|
||||||
|
+ mpp->action = mpp->action == ACT_RENAME ? ACT_RELOAD_RENAME :
|
||||||
|
+ ACT_RELOAD;
|
||||||
|
condlog(3, "%s: set ACT_RELOAD (forced by user)",
|
||||||
|
mpp->alias);
|
||||||
|
return;
|
||||||
|
@@ -749,7 +746,8 @@ select_action (struct multipath * mpp, vector curmp, int force_reload)
|
||||||
|
if (mpp->no_path_retry != NO_PATH_RETRY_UNDEF &&
|
||||||
|
!!strstr(mpp->features, "queue_if_no_path") !=
|
||||||
|
!!strstr(cmpp->features, "queue_if_no_path")) {
|
||||||
|
- mpp->action = ACT_RELOAD;
|
||||||
|
+ mpp->action = mpp->action == ACT_RENAME ? ACT_RELOAD_RENAME :
|
||||||
|
+ ACT_RELOAD;
|
||||||
|
condlog(3, "%s: set ACT_RELOAD (no_path_retry change)",
|
||||||
|
mpp->alias);
|
||||||
|
return;
|
||||||
|
@@ -759,7 +757,8 @@ select_action (struct multipath * mpp, vector curmp, int force_reload)
|
||||||
|
(strlen(cmpp->hwhandler) != strlen(mpp->hwhandler) ||
|
||||||
|
strncmp(cmpp->hwhandler, mpp->hwhandler,
|
||||||
|
strlen(mpp->hwhandler)))) {
|
||||||
|
- mpp->action = ACT_RELOAD;
|
||||||
|
+ mpp->action = mpp->action == ACT_RENAME ? ACT_RELOAD_RENAME :
|
||||||
|
+ ACT_RELOAD;
|
||||||
|
condlog(3, "%s: set ACT_RELOAD (hwhandler change)",
|
||||||
|
mpp->alias);
|
||||||
|
return;
|
||||||
|
@@ -769,7 +768,8 @@ select_action (struct multipath * mpp, vector curmp, int force_reload)
|
||||||
|
!!strstr(mpp->features, "retain_attached_hw_handler") !=
|
||||||
|
!!strstr(cmpp->features, "retain_attached_hw_handler") &&
|
||||||
|
get_linux_version_code() < KERNEL_VERSION(4, 3, 0)) {
|
||||||
|
- mpp->action = ACT_RELOAD;
|
||||||
|
+ mpp->action = mpp->action == ACT_RENAME ? ACT_RELOAD_RENAME :
|
||||||
|
+ ACT_RELOAD;
|
||||||
|
condlog(3, "%s: set ACT_RELOAD (retain_hwhandler change)",
|
||||||
|
mpp->alias);
|
||||||
|
return;
|
||||||
|
@@ -783,9 +783,13 @@ select_action (struct multipath * mpp, vector curmp, int force_reload)
|
||||||
|
remove_feature(&cmpp_feat, "queue_if_no_path");
|
||||||
|
remove_feature(&cmpp_feat, "retain_attached_hw_handler");
|
||||||
|
if (strncmp(mpp_feat, cmpp_feat, PARAMS_SIZE)) {
|
||||||
|
- mpp->action = ACT_RELOAD;
|
||||||
|
+ mpp->action = mpp->action == ACT_RENAME ?
|
||||||
|
+ ACT_RELOAD_RENAME : ACT_RELOAD;
|
||||||
|
condlog(3, "%s: set ACT_RELOAD (features change)",
|
||||||
|
mpp->alias);
|
||||||
|
+ FREE(cmpp_feat);
|
||||||
|
+ FREE(mpp_feat);
|
||||||
|
+ return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
FREE(cmpp_feat);
|
||||||
|
@@ -793,44 +797,49 @@ select_action (struct multipath * mpp, vector curmp, int force_reload)
|
||||||
|
|
||||||
|
if (!cmpp->selector || strncmp(cmpp->selector, mpp->selector,
|
||||||
|
strlen(mpp->selector))) {
|
||||||
|
- mpp->action = ACT_RELOAD;
|
||||||
|
+ mpp->action = mpp->action == ACT_RENAME ? ACT_RELOAD_RENAME :
|
||||||
|
+ ACT_RELOAD;
|
||||||
|
condlog(3, "%s: set ACT_RELOAD (selector change)",
|
||||||
|
mpp->alias);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (cmpp->minio != mpp->minio) {
|
||||||
|
- mpp->action = ACT_RELOAD;
|
||||||
|
+ mpp->action = mpp->action == ACT_RENAME ? ACT_RELOAD_RENAME :
|
||||||
|
+ ACT_RELOAD;
|
||||||
|
condlog(3, "%s: set ACT_RELOAD (minio change, %u->%u)",
|
||||||
|
mpp->alias, cmpp->minio, mpp->minio);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!cmpp->pg || VECTOR_SIZE(cmpp->pg) != VECTOR_SIZE(mpp->pg)) {
|
||||||
|
- mpp->action = ACT_RELOAD;
|
||||||
|
+ mpp->action = mpp->action == ACT_RENAME ? ACT_RELOAD_RENAME :
|
||||||
|
+ ACT_RELOAD;
|
||||||
|
condlog(3, "%s: set ACT_RELOAD (path group number change)",
|
||||||
|
mpp->alias);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (pgcmp(mpp, cmpp)) {
|
||||||
|
- mpp->action = ACT_RELOAD;
|
||||||
|
+ mpp->action = mpp->action == ACT_RENAME ? ACT_RELOAD_RENAME :
|
||||||
|
+ ACT_RELOAD;
|
||||||
|
condlog(3, "%s: set ACT_RELOAD (path group topology change)",
|
||||||
|
mpp->alias);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (cmpp->nextpg != mpp->bestpg) {
|
||||||
|
- mpp->action = ACT_SWITCHPG;
|
||||||
|
+ mpp->action = mpp->action == ACT_RENAME ? ACT_SWITCHPG_RENAME :
|
||||||
|
+ ACT_SWITCHPG;
|
||||||
|
condlog(3, "%s: set ACT_SWITCHPG (next path group change)",
|
||||||
|
mpp->alias);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!is_mpp_known_to_udev(cmpp)) {
|
||||||
|
- mpp->action = ACT_RELOAD;
|
||||||
|
+ mpp->action = mpp->action == ACT_RENAME ? ACT_SWITCHPG_RENAME :
|
||||||
|
+ ACT_SWITCHPG;
|
||||||
|
condlog(3, "%s: set ACT_RELOAD (udev device not initialized)",
|
||||||
|
mpp->alias);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
- mpp->action = ACT_NOTHING;
|
||||||
|
- condlog(3, "%s: set ACT_NOTHING (map unchanged)",
|
||||||
|
- mpp->alias);
|
||||||
|
+ if (mpp->action == ACT_NOTHING)
|
||||||
|
+ condlog(3, "%s: set ACT_NOTHING (map unchanged)", mpp->alias);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -924,6 +933,17 @@ int domap(struct multipath *mpp, char *params, int is_daemon)
|
||||||
|
mpp->action = ACT_RELOAD;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (mpp->action == ACT_RENAME || mpp->action == ACT_SWITCHPG_RENAME ||
|
||||||
|
+ mpp->action == ACT_RELOAD_RENAME ||
|
||||||
|
+ mpp->action == ACT_RESIZE_RENAME) {
|
||||||
|
+ conf = get_multipath_config();
|
||||||
|
+ pthread_cleanup_push(put_multipath_config, conf);
|
||||||
|
+ r = dm_rename(mpp->alias_old, mpp->alias,
|
||||||
|
+ conf->partition_delim, mpp->skip_kpartx);
|
||||||
|
+ pthread_cleanup_pop(1);
|
||||||
|
+ if (r == DOMAP_FAIL)
|
||||||
|
+ return r;
|
||||||
|
+ }
|
||||||
|
switch (mpp->action) {
|
||||||
|
case ACT_REJECT:
|
||||||
|
case ACT_NOTHING:
|
||||||
|
@@ -931,6 +951,7 @@ int domap(struct multipath *mpp, char *params, int is_daemon)
|
||||||
|
return DOMAP_EXIST;
|
||||||
|
|
||||||
|
case ACT_SWITCHPG:
|
||||||
|
+ case ACT_SWITCHPG_RENAME:
|
||||||
|
dm_switchgroup(mpp->alias, mpp->bestpg);
|
||||||
|
/*
|
||||||
|
* we may have avoided reinstating paths because there where in
|
||||||
|
@@ -957,6 +978,7 @@ int domap(struct multipath *mpp, char *params, int is_daemon)
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ACT_RELOAD:
|
||||||
|
+ case ACT_RELOAD_RENAME:
|
||||||
|
sysfs_set_max_sectors_kb(mpp, 1);
|
||||||
|
if (mpp->ghost_delay_tick > 0 && pathcount(mpp, PATH_UP))
|
||||||
|
mpp->ghost_delay_tick = 0;
|
||||||
|
@@ -964,6 +986,7 @@ int domap(struct multipath *mpp, char *params, int is_daemon)
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ACT_RESIZE:
|
||||||
|
+ case ACT_RESIZE_RENAME:
|
||||||
|
sysfs_set_max_sectors_kb(mpp, 1);
|
||||||
|
if (mpp->ghost_delay_tick > 0 && pathcount(mpp, PATH_UP))
|
||||||
|
mpp->ghost_delay_tick = 0;
|
||||||
|
@@ -971,29 +994,10 @@ int domap(struct multipath *mpp, char *params, int is_daemon)
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ACT_RENAME:
|
||||||
|
- conf = get_multipath_config();
|
||||||
|
- pthread_cleanup_push(put_multipath_config, conf);
|
||||||
|
- r = dm_rename(mpp->alias_old, mpp->alias,
|
||||||
|
- conf->partition_delim, mpp->skip_kpartx);
|
||||||
|
- pthread_cleanup_pop(1);
|
||||||
|
- break;
|
||||||
|
-
|
||||||
|
- case ACT_FORCERENAME:
|
||||||
|
- conf = get_multipath_config();
|
||||||
|
- pthread_cleanup_push(put_multipath_config, conf);
|
||||||
|
- r = dm_rename(mpp->alias_old, mpp->alias,
|
||||||
|
- conf->partition_delim, mpp->skip_kpartx);
|
||||||
|
- pthread_cleanup_pop(1);
|
||||||
|
- if (r) {
|
||||||
|
- sysfs_set_max_sectors_kb(mpp, 1);
|
||||||
|
- if (mpp->ghost_delay_tick > 0 &&
|
||||||
|
- pathcount(mpp, PATH_UP))
|
||||||
|
- mpp->ghost_delay_tick = 0;
|
||||||
|
- r = dm_addmap_reload(mpp, params, 0);
|
||||||
|
- }
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
+ r = DOMAP_FAIL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/libmultipath/configure.h b/libmultipath/configure.h
|
||||||
|
index 5cf08d45..1a93f49d 100644
|
||||||
|
--- a/libmultipath/configure.h
|
||||||
|
+++ b/libmultipath/configure.h
|
||||||
|
@@ -18,9 +18,11 @@ enum actions {
|
||||||
|
ACT_RENAME,
|
||||||
|
ACT_CREATE,
|
||||||
|
ACT_RESIZE,
|
||||||
|
- ACT_FORCERENAME,
|
||||||
|
+ ACT_RELOAD_RENAME,
|
||||||
|
ACT_DRY_RUN,
|
||||||
|
ACT_IMPOSSIBLE,
|
||||||
|
+ ACT_RESIZE_RENAME,
|
||||||
|
+ ACT_SWITCHPG_RENAME,
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
@ -1,7 +1,7 @@
|
|||||||
Summary: Tools to manage multipath devices using device-mapper
|
Summary: Tools to manage multipath devices using device-mapper
|
||||||
Name: device-mapper-multipath
|
Name: device-mapper-multipath
|
||||||
Version: 0.8.4
|
Version: 0.8.4
|
||||||
Release: 35%{?dist}
|
Release: 37%{?dist}
|
||||||
License: GPLv2
|
License: GPLv2
|
||||||
Group: System Environment/Base
|
Group: System Environment/Base
|
||||||
URL: http://christophe.varoqui.free.fr/
|
URL: http://christophe.varoqui.free.fr/
|
||||||
@ -139,6 +139,9 @@ Patch00125: 0125-multipath-add-historical-service-time-to-the-man-pag.patch
|
|||||||
Patch00126: 0126-libmultipath-copy-mpp-hwe-from-pp-hwe.patch
|
Patch00126: 0126-libmultipath-copy-mpp-hwe-from-pp-hwe.patch
|
||||||
Patch00127: 0127-libmultipath-don-t-leak-memory-on-invalid-strings.patch
|
Patch00127: 0127-libmultipath-don-t-leak-memory-on-invalid-strings.patch
|
||||||
Patch00128: 0128-libmutipath-validate-the-argument-count-of-config-st.patch
|
Patch00128: 0128-libmutipath-validate-the-argument-count-of-config-st.patch
|
||||||
|
Patch00129: 0129-libmultipath-select-resize-action-even-if-reload-is-.patch
|
||||||
|
Patch00130: 0130-libmultipath-cleanup-ACT_CREATE-code-in-select_actio.patch
|
||||||
|
Patch00131: 0131-libmultipath-keep-renames-from-stopping-other-multip.patch
|
||||||
|
|
||||||
# runtime
|
# runtime
|
||||||
Requires: %{name}-libs = %{version}-%{release}
|
Requires: %{name}-libs = %{version}-%{release}
|
||||||
@ -343,6 +346,17 @@ fi
|
|||||||
%{_pkgconfdir}/libdmmp.pc
|
%{_pkgconfdir}/libdmmp.pc
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Feb 3 2023 Benjamin Marzinski <bmarzins@redhat.com> 0.8.4-37
|
||||||
|
- Fix bugzilla linked to the changes (was previously linked to
|
||||||
|
the wrong bug, 2162537)
|
||||||
|
- Resolves: bz #2166468
|
||||||
|
|
||||||
|
* Wed Feb 1 2023 Benjamin Marzinski <bmarzins@redhat.com> 0.8.4-36
|
||||||
|
- Add 0129-libmultipath-select-resize-action-even-if-reload-is-.patch
|
||||||
|
- Add 0130-libmultipath-cleanup-ACT_CREATE-code-in-select_actio.patch
|
||||||
|
- Add 0131-libmultipath-keep-renames-from-stopping-other-multip.patch
|
||||||
|
- Resolves: bz #2166468
|
||||||
|
|
||||||
* Mon Jan 16 2023 Benjamin Marzinski <bmarzins@redhat.com> 0.8.4-35
|
* Mon Jan 16 2023 Benjamin Marzinski <bmarzins@redhat.com> 0.8.4-35
|
||||||
- Add 0127-libmultipath-don-t-leak-memory-on-invalid-strings.patch
|
- Add 0127-libmultipath-don-t-leak-memory-on-invalid-strings.patch
|
||||||
- Add 0128-libmutipath-validate-the-argument-count-of-config-st.patch
|
- Add 0128-libmutipath-validate-the-argument-count-of-config-st.patch
|
||||||
|
Loading…
Reference in New Issue
Block a user