device-mapper-multipath-0.7.9-4.git2df6110
Update Source to latest upstream commit * previous patch 0001-libmultipath-dm_is_mpath-cleanup.patch is included in this commit Rename files * Previous patches 0002-0009 are now patches 0006-0013 Add 0001-BZ-1668693-disable-user_friendly_names-for-NetApp.patch Add 0002-libmultipath-handle-existing-paths-in-marginal_path-.patch Add 0003-multipathd-cleanup-marginal-paths-checking-timers.patch Add 0004-libmultipath-fix-marginal-paths-queueing-errors.patch Add 0005-libmultipath-fix-marginal_paths-nr_active-check.patch * The above 5 patches have been submitted upstream Add 0014-RH-Fix-nvme-compilation-warning.patch * This change is only necessary because of Red Hat compilation differences.
This commit is contained in:
parent
f4ef615f25
commit
719f475042
1
.gitignore
vendored
1
.gitignore
vendored
@ -16,3 +16,4 @@ multipath-tools-091027.tar.gz
|
|||||||
/multipath-tools-0.7.8.tgz
|
/multipath-tools-0.7.8.tgz
|
||||||
/multipath-tools-0.7.9.tgz
|
/multipath-tools-0.7.9.tgz
|
||||||
/multipath-tools-17a6101.tgz
|
/multipath-tools-17a6101.tgz
|
||||||
|
/multipath-tools-2df6110.tgz
|
||||||
|
31
0001-BZ-1668693-disable-user_friendly_names-for-NetApp.patch
Normal file
31
0001-BZ-1668693-disable-user_friendly_names-for-NetApp.patch
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
Date: Thu, 24 Jan 2019 14:09:23 -0600
|
||||||
|
Subject: [PATCH] BZ 1668693: disable user_friendly_names for NetApp
|
||||||
|
|
||||||
|
NetApp has tools that rely on devices using WWID names. To avoid
|
||||||
|
breaking these, NetApp devices should continue to use WWID names, even
|
||||||
|
if the default config is set to enable user_friendly_names. If users
|
||||||
|
want to use user_friendly_names on NetApp devices, the must specifically
|
||||||
|
override the device config.
|
||||||
|
|
||||||
|
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
---
|
||||||
|
libmultipath/hwtable.c | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/libmultipath/hwtable.c b/libmultipath/hwtable.c
|
||||||
|
index d3a8d9b..8776411 100644
|
||||||
|
--- a/libmultipath/hwtable.c
|
||||||
|
+++ b/libmultipath/hwtable.c
|
||||||
|
@@ -719,6 +719,7 @@ static struct hwentry default_hw[] = {
|
||||||
|
.flush_on_last_del = FLUSH_ENABLED,
|
||||||
|
.dev_loss = MAX_DEV_LOSS_TMO,
|
||||||
|
.prio_name = PRIO_ONTAP,
|
||||||
|
+ .user_friendly_names = USER_FRIENDLY_NAMES_OFF,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
--
|
||||||
|
2.17.2
|
||||||
|
|
@ -1,92 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
Date: Tue, 11 Dec 2018 14:11:19 -0600
|
|
||||||
Subject: [PATCH] libmultipath: dm_is_mpath cleanup
|
|
||||||
|
|
||||||
Add condlog() message in dm_is_mpath() fails and change the
|
|
||||||
dm_is_mpath() call in watch_dmevents() to check the return value with
|
|
||||||
the same syntax as all the other callers.
|
|
||||||
|
|
||||||
Fixes: 9050cd5a "libmultipath: fix false removes in dmevents polling code"
|
|
||||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
---
|
|
||||||
libmultipath/devmapper.c | 21 ++++++++++++---------
|
|
||||||
multipathd/dmevents.c | 4 +++-
|
|
||||||
2 files changed, 15 insertions(+), 10 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c
|
|
||||||
index 0e98923..3294bd4 100644
|
|
||||||
--- a/libmultipath/devmapper.c
|
|
||||||
+++ b/libmultipath/devmapper.c
|
|
||||||
@@ -709,41 +709,44 @@ int dm_is_mpath(const char *name)
|
|
||||||
const char *uuid;
|
|
||||||
|
|
||||||
if (!(dmt = libmp_dm_task_create(DM_DEVICE_TABLE)))
|
|
||||||
- return -1;
|
|
||||||
+ goto out;
|
|
||||||
|
|
||||||
if (!dm_task_set_name(dmt, name))
|
|
||||||
- goto out;
|
|
||||||
+ goto out_task;
|
|
||||||
|
|
||||||
dm_task_no_open_count(dmt);
|
|
||||||
|
|
||||||
if (!dm_task_run(dmt))
|
|
||||||
- goto out;
|
|
||||||
+ goto out_task;
|
|
||||||
|
|
||||||
if (!dm_task_get_info(dmt, &info))
|
|
||||||
- goto out;
|
|
||||||
+ goto out_task;
|
|
||||||
|
|
||||||
r = 0;
|
|
||||||
|
|
||||||
if (!info.exists)
|
|
||||||
- goto out;
|
|
||||||
+ goto out_task;
|
|
||||||
|
|
||||||
uuid = dm_task_get_uuid(dmt);
|
|
||||||
|
|
||||||
if (!uuid || strncmp(uuid, UUID_PREFIX, UUID_PREFIX_LEN) != 0)
|
|
||||||
- goto out;
|
|
||||||
+ goto out_task;
|
|
||||||
|
|
||||||
/* Fetch 1st target */
|
|
||||||
if (dm_get_next_target(dmt, NULL, &start, &length, &target_type,
|
|
||||||
¶ms) != NULL)
|
|
||||||
/* multiple targets */
|
|
||||||
- goto out;
|
|
||||||
+ goto out_task;
|
|
||||||
|
|
||||||
if (!target_type || strcmp(target_type, TGT_MPATH) != 0)
|
|
||||||
- goto out;
|
|
||||||
+ goto out_task;
|
|
||||||
|
|
||||||
r = 1;
|
|
||||||
-out:
|
|
||||||
+out_task:
|
|
||||||
dm_task_destroy(dmt);
|
|
||||||
+out:
|
|
||||||
+ if (r < 0)
|
|
||||||
+ condlog(2, "%s: dm command failed in %s", name, __FUNCTION__);
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/multipathd/dmevents.c b/multipathd/dmevents.c
|
|
||||||
index aae7a09..0034892 100644
|
|
||||||
--- a/multipathd/dmevents.c
|
|
||||||
+++ b/multipathd/dmevents.c
|
|
||||||
@@ -206,7 +206,9 @@ int watch_dmevents(char *name)
|
|
||||||
struct dev_event *dev_evt, *old_dev_evt;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
- if (!dm_is_mpath(name)) {
|
|
||||||
+ /* We know that this is a multipath device, so only fail if
|
|
||||||
+ * device-mapper tells us that we're wrong */
|
|
||||||
+ if (dm_is_mpath(name) == 0) {
|
|
||||||
condlog(0, "%s: not a multipath device. can't watch events",
|
|
||||||
name);
|
|
||||||
return -1;
|
|
||||||
--
|
|
||||||
2.17.2
|
|
||||||
|
|
@ -0,0 +1,49 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
Date: Fri, 25 Jan 2019 16:45:26 -0600
|
||||||
|
Subject: [PATCH] libmultipath: handle existing paths in marginal_path enqueue
|
||||||
|
|
||||||
|
If the path that enqueue_io_err_stat_by_path() is trying to add
|
||||||
|
is already on the list, just return success. There's no reason
|
||||||
|
to fail in this case.
|
||||||
|
|
||||||
|
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
---
|
||||||
|
libmultipath/io_err_stat.c | 6 ++----
|
||||||
|
1 file changed, 2 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libmultipath/io_err_stat.c b/libmultipath/io_err_stat.c
|
||||||
|
index 02b1453..1cb3ffe 100644
|
||||||
|
--- a/libmultipath/io_err_stat.c
|
||||||
|
+++ b/libmultipath/io_err_stat.c
|
||||||
|
@@ -254,7 +254,6 @@ static void free_io_err_pathvec(struct io_err_stat_pathvec *p)
|
||||||
|
* return value
|
||||||
|
* 0: enqueue OK
|
||||||
|
* 1: fails because of internal error
|
||||||
|
- * 2: fails because of existing already
|
||||||
|
*/
|
||||||
|
static int enqueue_io_err_stat_by_path(struct path *path)
|
||||||
|
{
|
||||||
|
@@ -264,7 +263,7 @@ static int enqueue_io_err_stat_by_path(struct path *path)
|
||||||
|
p = find_err_path_by_dev(paths->pathvec, path->dev);
|
||||||
|
if (p) {
|
||||||
|
pthread_mutex_unlock(&paths->mutex);
|
||||||
|
- return 2;
|
||||||
|
+ return 0;
|
||||||
|
}
|
||||||
|
pthread_mutex_unlock(&paths->mutex);
|
||||||
|
|
||||||
|
@@ -418,9 +417,8 @@ int hit_io_err_recheck_time(struct path *pp)
|
||||||
|
io_err_stat_log(3, "%s: enqueue fails, to recover",
|
||||||
|
pp->dev);
|
||||||
|
goto recover;
|
||||||
|
- } else if (!r) {
|
||||||
|
+ } else
|
||||||
|
pp->io_err_pathfail_cnt = PATH_IO_ERR_IN_CHECKING;
|
||||||
|
- }
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
--
|
||||||
|
2.17.2
|
||||||
|
|
70
0003-multipathd-cleanup-marginal-paths-checking-timers.patch
Normal file
70
0003-multipathd-cleanup-marginal-paths-checking-timers.patch
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
Date: Fri, 25 Jan 2019 17:09:42 -0600
|
||||||
|
Subject: [PATCH] multipathd: cleanup marginal paths checking timers
|
||||||
|
|
||||||
|
When a path gets recovered in hit_io_err_recheck_time(), it will
|
||||||
|
continue running in check_path(), so there is no reason to schedule
|
||||||
|
another path check as soon as possible (since one is currently
|
||||||
|
happening).
|
||||||
|
|
||||||
|
Also, there isn't much point in restarting the io err stat checking when
|
||||||
|
the path is down, so hit_io_err_recheck_time() should only be run when
|
||||||
|
the path is up. Downed marginal paths can be treated just like any other
|
||||||
|
downed path.
|
||||||
|
|
||||||
|
Finally, there is no reason to set reset pp->io_err_dis_reinstate_time
|
||||||
|
when we decide to enqueue a path. Either th enqueue will fail and the
|
||||||
|
path will get recovered, or it will succeed, and we won't check the
|
||||||
|
reinstate time again until poll_io_err_stat() marks the path as needing
|
||||||
|
a requeue.
|
||||||
|
|
||||||
|
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
---
|
||||||
|
libmultipath/io_err_stat.c | 8 --------
|
||||||
|
multipathd/main.c | 3 ++-
|
||||||
|
2 files changed, 2 insertions(+), 9 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libmultipath/io_err_stat.c b/libmultipath/io_err_stat.c
|
||||||
|
index 1cb3ffe..416e13a 100644
|
||||||
|
--- a/libmultipath/io_err_stat.c
|
||||||
|
+++ b/libmultipath/io_err_stat.c
|
||||||
|
@@ -400,13 +400,6 @@ int hit_io_err_recheck_time(struct path *pp)
|
||||||
|
io_err_stat_log(4, "%s: reschedule checking after %d seconds",
|
||||||
|
pp->dev,
|
||||||
|
pp->mpp->marginal_path_err_recheck_gap_time);
|
||||||
|
- /*
|
||||||
|
- * to reschedule io error checking again
|
||||||
|
- * if the path is good enough, we claim it is good
|
||||||
|
- * and can be reinsated as soon as possible in the
|
||||||
|
- * check_path routine.
|
||||||
|
- */
|
||||||
|
- pp->io_err_dis_reinstate_time = curr_time.tv_sec;
|
||||||
|
r = enqueue_io_err_stat_by_path(pp);
|
||||||
|
/*
|
||||||
|
* Enqueue fails because of internal error.
|
||||||
|
@@ -426,7 +419,6 @@ int hit_io_err_recheck_time(struct path *pp)
|
||||||
|
recover:
|
||||||
|
pp->io_err_pathfail_cnt = 0;
|
||||||
|
pp->io_err_disable_reinstate = 0;
|
||||||
|
- pp->tick = 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/multipathd/main.c b/multipathd/main.c
|
||||||
|
index 491832b..cac9050 100644
|
||||||
|
--- a/multipathd/main.c
|
||||||
|
+++ b/multipathd/main.c
|
||||||
|
@@ -2075,7 +2075,8 @@ check_path (struct vectors * vecs, struct path * pp, int ticks)
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (pp->io_err_disable_reinstate && hit_io_err_recheck_time(pp)) {
|
||||||
|
+ if ((newstate == PATH_UP || newstate == PATH_GHOST) &&
|
||||||
|
+ pp->io_err_disable_reinstate && hit_io_err_recheck_time(pp)) {
|
||||||
|
pp->state = PATH_SHAKY;
|
||||||
|
/*
|
||||||
|
* to reschedule as soon as possible,so that this path can
|
||||||
|
--
|
||||||
|
2.17.2
|
||||||
|
|
176
0004-libmultipath-fix-marginal-paths-queueing-errors.patch
Normal file
176
0004-libmultipath-fix-marginal-paths-queueing-errors.patch
Normal file
@ -0,0 +1,176 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
Date: Mon, 28 Jan 2019 00:20:53 -0600
|
||||||
|
Subject: [PATCH] libmultipath: fix marginal paths queueing errors
|
||||||
|
|
||||||
|
The current marginal paths code tries to enqueue paths for io error
|
||||||
|
checking when multipathd receives a uevent on path failure. This can run
|
||||||
|
into a couple of problems. First, this uevent could happen before or
|
||||||
|
after multipathd actually fails the path, so simply checking nr_active
|
||||||
|
doesn't tell us if this is the last active path. Also, The code to fail
|
||||||
|
the path in enqueue_io_err_stat_by_path() doesn't ever update the path
|
||||||
|
state. This can cause the path to get failed twice, temporarily leading
|
||||||
|
to incorrect nr_active counts. Further, The point when multipathd should
|
||||||
|
care if this is the last active path is when the path has come up again,
|
||||||
|
not when it goes down. Lastly, if the path is down, it is often
|
||||||
|
impossible to open the path device, causing setup_directio_ctx() to
|
||||||
|
fail, which causes multipathd to skip io error checking and mark the
|
||||||
|
path as not marginal.
|
||||||
|
|
||||||
|
Instead, multipathd should just make sure that if the path is marginal,
|
||||||
|
it gets failed in the uevent, so as not to race with the checkerloop
|
||||||
|
thread. Then, when the path comes back up, check_path() can enqueue it,
|
||||||
|
just like it does for paths that need to get rechecked. To make it
|
||||||
|
obvious that the state PATH_IO_ERR_IN_POLLING_RECHECK and the function
|
||||||
|
hit_io_err_recheck_time() now apply to paths waiting to be enqueued for
|
||||||
|
the first time as well, I've also changed their names to
|
||||||
|
PATH_IO_ERR_WAITING_TO_CHECK and need_io_err_check(), respectively.
|
||||||
|
|
||||||
|
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
---
|
||||||
|
libmultipath/io_err_stat.c | 55 +++++++++++++++++---------------------
|
||||||
|
libmultipath/io_err_stat.h | 2 +-
|
||||||
|
multipathd/main.c | 2 +-
|
||||||
|
3 files changed, 27 insertions(+), 32 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libmultipath/io_err_stat.c b/libmultipath/io_err_stat.c
|
||||||
|
index 416e13a..72aacf3 100644
|
||||||
|
--- a/libmultipath/io_err_stat.c
|
||||||
|
+++ b/libmultipath/io_err_stat.c
|
||||||
|
@@ -41,7 +41,7 @@
|
||||||
|
#define CONCUR_NR_EVENT 32
|
||||||
|
|
||||||
|
#define PATH_IO_ERR_IN_CHECKING -1
|
||||||
|
-#define PATH_IO_ERR_IN_POLLING_RECHECK -2
|
||||||
|
+#define PATH_IO_ERR_WAITING_TO_CHECK -2
|
||||||
|
|
||||||
|
#define io_err_stat_log(prio, fmt, args...) \
|
||||||
|
condlog(prio, "io error statistic: " fmt, ##args)
|
||||||
|
@@ -283,24 +283,6 @@ static int enqueue_io_err_stat_by_path(struct path *path)
|
||||||
|
vector_set_slot(paths->pathvec, p);
|
||||||
|
pthread_mutex_unlock(&paths->mutex);
|
||||||
|
|
||||||
|
- if (!path->io_err_disable_reinstate) {
|
||||||
|
- /*
|
||||||
|
- *fail the path in the kernel for the time of the to make
|
||||||
|
- *the test more reliable
|
||||||
|
- */
|
||||||
|
- io_err_stat_log(3, "%s: fail dm path %s before checking",
|
||||||
|
- path->mpp->alias, path->dev);
|
||||||
|
- path->io_err_disable_reinstate = 1;
|
||||||
|
- dm_fail_path(path->mpp->alias, path->dev_t);
|
||||||
|
- update_queue_mode_del_path(path->mpp);
|
||||||
|
-
|
||||||
|
- /*
|
||||||
|
- * schedule path check as soon as possible to
|
||||||
|
- * update path state to delayed state
|
||||||
|
- */
|
||||||
|
- path->tick = 1;
|
||||||
|
-
|
||||||
|
- }
|
||||||
|
io_err_stat_log(2, "%s: enqueue path %s to check",
|
||||||
|
path->mpp->alias, path->dev);
|
||||||
|
return 0;
|
||||||
|
@@ -317,7 +299,6 @@ free_ioerr_path:
|
||||||
|
int io_err_stat_handle_pathfail(struct path *path)
|
||||||
|
{
|
||||||
|
struct timespec curr_time;
|
||||||
|
- int res;
|
||||||
|
|
||||||
|
if (uatomic_read(&io_err_thread_running) == 0)
|
||||||
|
return 1;
|
||||||
|
@@ -332,8 +313,6 @@ int io_err_stat_handle_pathfail(struct path *path)
|
||||||
|
|
||||||
|
if (!path->mpp)
|
||||||
|
return 1;
|
||||||
|
- if (path->mpp->nr_active <= 1)
|
||||||
|
- return 1;
|
||||||
|
if (path->mpp->marginal_path_double_failed_time <= 0 ||
|
||||||
|
path->mpp->marginal_path_err_sample_time <= 0 ||
|
||||||
|
path->mpp->marginal_path_err_recheck_gap_time <= 0 ||
|
||||||
|
@@ -371,17 +350,33 @@ int io_err_stat_handle_pathfail(struct path *path)
|
||||||
|
}
|
||||||
|
path->io_err_pathfail_cnt++;
|
||||||
|
if (path->io_err_pathfail_cnt >= FLAKY_PATHFAIL_THRESHOLD) {
|
||||||
|
- res = enqueue_io_err_stat_by_path(path);
|
||||||
|
- if (!res)
|
||||||
|
- path->io_err_pathfail_cnt = PATH_IO_ERR_IN_CHECKING;
|
||||||
|
- else
|
||||||
|
- path->io_err_pathfail_cnt = 0;
|
||||||
|
+ path->io_err_disable_reinstate = 1;
|
||||||
|
+ path->io_err_pathfail_cnt = PATH_IO_ERR_WAITING_TO_CHECK;
|
||||||
|
+ /* enqueue path as soon as it comes up */
|
||||||
|
+ path->io_err_dis_reinstate_time = 0;
|
||||||
|
+ if (path->state != PATH_DOWN) {
|
||||||
|
+ struct config *conf;
|
||||||
|
+ int oldstate = path->state;
|
||||||
|
+ int checkint;
|
||||||
|
+
|
||||||
|
+ conf = get_multipath_config();
|
||||||
|
+ checkint = conf->checkint;
|
||||||
|
+ put_multipath_config(conf);
|
||||||
|
+ io_err_stat_log(2, "%s: mark as failed", path->dev);
|
||||||
|
+ path->mpp->stat_path_failures++;
|
||||||
|
+ path->state = PATH_DOWN;
|
||||||
|
+ path->dmstate = PSTATE_FAILED;
|
||||||
|
+ if (oldstate == PATH_UP || oldstate == PATH_GHOST)
|
||||||
|
+ update_queue_mode_del_path(path->mpp);
|
||||||
|
+ if (path->tick > checkint)
|
||||||
|
+ path->tick = checkint;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
-int hit_io_err_recheck_time(struct path *pp)
|
||||||
|
+int need_io_err_check(struct path *pp)
|
||||||
|
{
|
||||||
|
struct timespec curr_time;
|
||||||
|
int r;
|
||||||
|
@@ -392,7 +387,7 @@ int hit_io_err_recheck_time(struct path *pp)
|
||||||
|
io_err_stat_log(2, "%s: recover path early", pp->dev);
|
||||||
|
goto recover;
|
||||||
|
}
|
||||||
|
- if (pp->io_err_pathfail_cnt != PATH_IO_ERR_IN_POLLING_RECHECK)
|
||||||
|
+ if (pp->io_err_pathfail_cnt != PATH_IO_ERR_WAITING_TO_CHECK)
|
||||||
|
return 1;
|
||||||
|
if (clock_gettime(CLOCK_MONOTONIC, &curr_time) != 0 ||
|
||||||
|
(curr_time.tv_sec - pp->io_err_dis_reinstate_time) >
|
||||||
|
@@ -489,7 +484,7 @@ static int poll_io_err_stat(struct vectors *vecs, struct io_err_stat_path *pp)
|
||||||
|
} else if (path->mpp && path->mpp->nr_active > 1) {
|
||||||
|
io_err_stat_log(3, "%s: keep failing the dm path %s",
|
||||||
|
path->mpp->alias, path->dev);
|
||||||
|
- path->io_err_pathfail_cnt = PATH_IO_ERR_IN_POLLING_RECHECK;
|
||||||
|
+ path->io_err_pathfail_cnt = PATH_IO_ERR_WAITING_TO_CHECK;
|
||||||
|
path->io_err_disable_reinstate = 1;
|
||||||
|
path->io_err_dis_reinstate_time = currtime.tv_sec;
|
||||||
|
io_err_stat_log(3, "%s: disable reinstating of %s",
|
||||||
|
diff --git a/libmultipath/io_err_stat.h b/libmultipath/io_err_stat.h
|
||||||
|
index bbf31b4..53d6d7d 100644
|
||||||
|
--- a/libmultipath/io_err_stat.h
|
||||||
|
+++ b/libmultipath/io_err_stat.h
|
||||||
|
@@ -10,6 +10,6 @@ extern pthread_attr_t io_err_stat_attr;
|
||||||
|
int start_io_err_stat_thread(void *data);
|
||||||
|
void stop_io_err_stat_thread(void);
|
||||||
|
int io_err_stat_handle_pathfail(struct path *path);
|
||||||
|
-int hit_io_err_recheck_time(struct path *pp);
|
||||||
|
+int need_io_err_check(struct path *pp);
|
||||||
|
|
||||||
|
#endif /* _IO_ERR_STAT_H */
|
||||||
|
diff --git a/multipathd/main.c b/multipathd/main.c
|
||||||
|
index cac9050..0e3ac2c 100644
|
||||||
|
--- a/multipathd/main.c
|
||||||
|
+++ b/multipathd/main.c
|
||||||
|
@@ -2076,7 +2076,7 @@ check_path (struct vectors * vecs, struct path * pp, int ticks)
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((newstate == PATH_UP || newstate == PATH_GHOST) &&
|
||||||
|
- pp->io_err_disable_reinstate && hit_io_err_recheck_time(pp)) {
|
||||||
|
+ pp->io_err_disable_reinstate && need_io_err_check(pp)) {
|
||||||
|
pp->state = PATH_SHAKY;
|
||||||
|
/*
|
||||||
|
* to reschedule as soon as possible,so that this path can
|
||||||
|
--
|
||||||
|
2.17.2
|
||||||
|
|
30
0005-libmultipath-fix-marginal_paths-nr_active-check.patch
Normal file
30
0005-libmultipath-fix-marginal_paths-nr_active-check.patch
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
Date: Tue, 29 Jan 2019 18:26:04 -0600
|
||||||
|
Subject: [PATCH] libmultipath: fix marginal_paths nr_active check
|
||||||
|
|
||||||
|
Marginal paths are SHAKY, so they don't count towards the number of
|
||||||
|
active paths. poll_io_err_stat() shouldn't automatically reinstate a
|
||||||
|
marginal path if there already is an active path.
|
||||||
|
|
||||||
|
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
---
|
||||||
|
libmultipath/io_err_stat.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/libmultipath/io_err_stat.c b/libmultipath/io_err_stat.c
|
||||||
|
index 72aacf3..554b777 100644
|
||||||
|
--- a/libmultipath/io_err_stat.c
|
||||||
|
+++ b/libmultipath/io_err_stat.c
|
||||||
|
@@ -481,7 +481,7 @@ static int poll_io_err_stat(struct vectors *vecs, struct io_err_stat_path *pp)
|
||||||
|
*/
|
||||||
|
path->tick = 1;
|
||||||
|
|
||||||
|
- } else if (path->mpp && path->mpp->nr_active > 1) {
|
||||||
|
+ } else if (path->mpp && path->mpp->nr_active > 0) {
|
||||||
|
io_err_stat_log(3, "%s: keep failing the dm path %s",
|
||||||
|
path->mpp->alias, path->dev);
|
||||||
|
path->io_err_pathfail_cnt = PATH_IO_ERR_WAITING_TO_CHECK;
|
||||||
|
--
|
||||||
|
2.17.2
|
||||||
|
|
@ -5,23 +5,20 @@ Subject: [PATCH] RH: fixup udev rules for redhat
|
|||||||
|
|
||||||
The multipath rules need to run after scsi_id is run. This means moving
|
The multipath rules need to run after scsi_id is run. This means moving
|
||||||
them after 60-persistent-storage.rules for redhat. Redhat also uses a
|
them after 60-persistent-storage.rules for redhat. Redhat also uses a
|
||||||
different naming scheme for partitions than SuSE. Also, there are some
|
different naming scheme for partitions than SuSE.
|
||||||
false warnings that gcc throws because of the changed options. Fix these
|
|
||||||
too.
|
|
||||||
|
|
||||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
---
|
---
|
||||||
Makefile.inc | 2 +-
|
Makefile.inc | 2 +-
|
||||||
kpartx/kpartx.rules | 2 +-
|
kpartx/kpartx.rules | 2 +-
|
||||||
multipath/Makefile | 4 ++--
|
multipath/Makefile | 4 ++--
|
||||||
multipath/main.c | 2 +-
|
3 files changed, 4 insertions(+), 4 deletions(-)
|
||||||
4 files changed, 5 insertions(+), 5 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/Makefile.inc b/Makefile.inc
|
diff --git a/Makefile.inc b/Makefile.inc
|
||||||
index a83f02c..b86cba6 100644
|
index fc728ca..2f0bcea 100644
|
||||||
--- a/Makefile.inc
|
--- a/Makefile.inc
|
||||||
+++ b/Makefile.inc
|
+++ b/Makefile.inc
|
||||||
@@ -51,7 +51,7 @@ endif
|
@@ -48,7 +48,7 @@ endif
|
||||||
prefix =
|
prefix =
|
||||||
exec_prefix = $(prefix)
|
exec_prefix = $(prefix)
|
||||||
usr_prefix = $(prefix)
|
usr_prefix = $(prefix)
|
||||||
@ -64,19 +61,6 @@ index 0828a8f..b9bbb3c 100644
|
|||||||
$(RM) $(DESTDIR)$(man8dir)/$(EXEC).8.gz
|
$(RM) $(DESTDIR)$(man8dir)/$(EXEC).8.gz
|
||||||
$(RM) $(DESTDIR)$(man5dir)/$(EXEC).conf.5.gz
|
$(RM) $(DESTDIR)$(man5dir)/$(EXEC).conf.5.gz
|
||||||
|
|
||||||
diff --git a/multipath/main.c b/multipath/main.c
|
|
||||||
index f40c179..f3265ee 100644
|
|
||||||
--- a/multipath/main.c
|
|
||||||
+++ b/multipath/main.c
|
|
||||||
@@ -414,7 +414,7 @@ static int find_multipaths_check_timeout(const struct path *pp, long tmo,
|
|
||||||
struct timespec now, ftimes[2], tdiff;
|
|
||||||
struct stat st;
|
|
||||||
long fd;
|
|
||||||
- int r, err, retries = 0;
|
|
||||||
+ int r, err = 0, retries = 0;
|
|
||||||
|
|
||||||
clock_gettime(CLOCK_REALTIME, &now);
|
|
||||||
|
|
||||||
--
|
--
|
||||||
2.17.2
|
2.17.2
|
||||||
|
|
@ -49,10 +49,10 @@ index 709895e..224e5b3 100644
|
|||||||
udev_device_get_properties_list_entry(udev)) {
|
udev_device_get_properties_list_entry(udev)) {
|
||||||
|
|
||||||
diff --git a/multipath/multipath.conf.5 b/multipath/multipath.conf.5
|
diff --git a/multipath/multipath.conf.5 b/multipath/multipath.conf.5
|
||||||
index 6333366..3dab26b 100644
|
index 88b8edd..2f6cf03 100644
|
||||||
--- a/multipath/multipath.conf.5
|
--- a/multipath/multipath.conf.5
|
||||||
+++ b/multipath/multipath.conf.5
|
+++ b/multipath/multipath.conf.5
|
||||||
@@ -1195,16 +1195,14 @@ keywords. Both are regular expressions. For a full description of these keywords
|
@@ -1239,16 +1239,14 @@ keywords. Both are regular expressions. For a full description of these keywords
|
||||||
Regular expression for an udev property. All
|
Regular expression for an udev property. All
|
||||||
devices that have matching udev properties will be excluded/included.
|
devices that have matching udev properties will be excluded/included.
|
||||||
The handling of the \fIproperty\fR keyword is special,
|
The handling of the \fIproperty\fR keyword is special,
|
@ -20,7 +20,7 @@ Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|||||||
5 files changed, 20 insertions(+)
|
5 files changed, 20 insertions(+)
|
||||||
|
|
||||||
diff --git a/libmultipath/config.c b/libmultipath/config.c
|
diff --git a/libmultipath/config.c b/libmultipath/config.c
|
||||||
index 5af7af5..2a9c668 100644
|
index 24d71ae..9b6d71e 100644
|
||||||
--- a/libmultipath/config.c
|
--- a/libmultipath/config.c
|
||||||
+++ b/libmultipath/config.c
|
+++ b/libmultipath/config.c
|
||||||
@@ -26,6 +26,7 @@
|
@@ -26,6 +26,7 @@
|
||||||
@ -31,7 +31,7 @@ index 5af7af5..2a9c668 100644
|
|||||||
|
|
||||||
static int
|
static int
|
||||||
hwe_strmatch (const struct hwentry *hwe1, const struct hwentry *hwe2)
|
hwe_strmatch (const struct hwentry *hwe1, const struct hwentry *hwe2)
|
||||||
@@ -743,6 +744,20 @@ load_config (char * file)
|
@@ -746,6 +747,20 @@ load_config (char * file)
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
factorize_hwtable(conf->hwtable, builtin_hwtable_size, file);
|
factorize_hwtable(conf->hwtable, builtin_hwtable_size, file);
|
||||||
@ -53,7 +53,7 @@ index 5af7af5..2a9c668 100644
|
|||||||
|
|
||||||
conf->processed_main_config = 1;
|
conf->processed_main_config = 1;
|
||||||
diff --git a/libmultipath/config.h b/libmultipath/config.h
|
diff --git a/libmultipath/config.h b/libmultipath/config.h
|
||||||
index 7d0cd9a..d7fb8e2 100644
|
index b938c26..a871a95 100644
|
||||||
--- a/libmultipath/config.h
|
--- a/libmultipath/config.h
|
||||||
+++ b/libmultipath/config.h
|
+++ b/libmultipath/config.h
|
||||||
@@ -9,6 +9,7 @@
|
@@ -9,6 +9,7 @@
|
@ -13,10 +13,10 @@ Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|||||||
1 file changed, 16 insertions(+), 8 deletions(-)
|
1 file changed, 16 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
diff --git a/Makefile.inc b/Makefile.inc
|
diff --git a/Makefile.inc b/Makefile.inc
|
||||||
index b86cba6..70accd7 100644
|
index 2f0bcea..b98800a 100644
|
||||||
--- a/Makefile.inc
|
--- a/Makefile.inc
|
||||||
+++ b/Makefile.inc
|
+++ b/Makefile.inc
|
||||||
@@ -85,15 +85,23 @@ TEST_CC_OPTION = $(shell \
|
@@ -83,15 +83,23 @@ TEST_CC_OPTION = $(shell \
|
||||||
echo "$(2)"; \
|
echo "$(2)"; \
|
||||||
fi)
|
fi)
|
||||||
|
|
@ -21,10 +21,10 @@ Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|||||||
create mode 100644 multipath/mpathconf.8
|
create mode 100644 multipath/mpathconf.8
|
||||||
|
|
||||||
diff --git a/libmultipath/config.c b/libmultipath/config.c
|
diff --git a/libmultipath/config.c b/libmultipath/config.c
|
||||||
index 2a9c668..654f330 100644
|
index 9b6d71e..be40bbf 100644
|
||||||
--- a/libmultipath/config.c
|
--- a/libmultipath/config.c
|
||||||
+++ b/libmultipath/config.c
|
+++ b/libmultipath/config.c
|
||||||
@@ -746,6 +746,8 @@ load_config (char * file)
|
@@ -749,6 +749,8 @@ load_config (char * file)
|
||||||
factorize_hwtable(conf->hwtable, builtin_hwtable_size, file);
|
factorize_hwtable(conf->hwtable, builtin_hwtable_size, file);
|
||||||
} else {
|
} else {
|
||||||
condlog(0, "/etc/multipath.conf does not exist, blacklisting all devices.");
|
condlog(0, "/etc/multipath.conf does not exist, blacklisting all devices.");
|
@ -86,7 +86,7 @@ index 0c6ee54..e32a0b0 100644
|
|||||||
enum {
|
enum {
|
||||||
WWID_IS_NOT_FAILED = 0,
|
WWID_IS_NOT_FAILED = 0,
|
||||||
diff --git a/multipath/main.c b/multipath/main.c
|
diff --git a/multipath/main.c b/multipath/main.c
|
||||||
index f3265ee..37b8e31 100644
|
index 5abb118..1481e7f 100644
|
||||||
--- a/multipath/main.c
|
--- a/multipath/main.c
|
||||||
+++ b/multipath/main.c
|
+++ b/multipath/main.c
|
||||||
@@ -133,7 +133,7 @@ usage (char * progname)
|
@@ -133,7 +133,7 @@ usage (char * progname)
|
||||||
@ -107,7 +107,7 @@ index f3265ee..37b8e31 100644
|
|||||||
" -c check if a device should be a path in a multipath device\n"
|
" -c check if a device should be a path in a multipath device\n"
|
||||||
" -C check if a multipath device has usable paths\n"
|
" -C check if a multipath device has usable paths\n"
|
||||||
" -q allow queue_if_no_path when multipathd is not running\n"
|
" -q allow queue_if_no_path when multipathd is not running\n"
|
||||||
@@ -879,7 +881,7 @@ main (int argc, char *argv[])
|
@@ -870,7 +872,7 @@ main (int argc, char *argv[])
|
||||||
exit(RTVL_FAIL);
|
exit(RTVL_FAIL);
|
||||||
multipath_conf = conf;
|
multipath_conf = conf;
|
||||||
conf->retrigger_tries = 0;
|
conf->retrigger_tries = 0;
|
||||||
@ -116,7 +116,7 @@ index f3265ee..37b8e31 100644
|
|||||||
switch(arg) {
|
switch(arg) {
|
||||||
case 1: printf("optarg : %s\n",optarg);
|
case 1: printf("optarg : %s\n",optarg);
|
||||||
break;
|
break;
|
||||||
@@ -949,6 +951,10 @@ main (int argc, char *argv[])
|
@@ -940,6 +942,10 @@ main (int argc, char *argv[])
|
||||||
case 'T':
|
case 'T':
|
||||||
cmd = CMD_DUMP_CONFIG;
|
cmd = CMD_DUMP_CONFIG;
|
||||||
break;
|
break;
|
@ -16,7 +16,7 @@ Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|||||||
3 files changed, 35 insertions(+), 6 deletions(-)
|
3 files changed, 35 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
diff --git a/libmultipath/dict.c b/libmultipath/dict.c
|
diff --git a/libmultipath/dict.c b/libmultipath/dict.c
|
||||||
index a81c051..fbef142 100644
|
index eaad4f1..95ae09b 100644
|
||||||
--- a/libmultipath/dict.c
|
--- a/libmultipath/dict.c
|
||||||
+++ b/libmultipath/dict.c
|
+++ b/libmultipath/dict.c
|
||||||
@@ -58,6 +58,21 @@ set_str(vector strvec, void *ptr)
|
@@ -58,6 +58,21 @@ set_str(vector strvec, void *ptr)
|
||||||
@ -41,7 +41,7 @@ index a81c051..fbef142 100644
|
|||||||
static int
|
static int
|
||||||
set_yes_no(vector strvec, void *ptr)
|
set_yes_no(vector strvec, void *ptr)
|
||||||
{
|
{
|
||||||
@@ -1347,7 +1362,7 @@ ble_ ## option ## _handler (struct config *conf, vector strvec) \
|
@@ -1374,7 +1389,7 @@ ble_ ## option ## _handler (struct config *conf, vector strvec) \
|
||||||
if (!conf->option) \
|
if (!conf->option) \
|
||||||
return 1; \
|
return 1; \
|
||||||
\
|
\
|
||||||
@ -50,7 +50,7 @@ index a81c051..fbef142 100644
|
|||||||
if (!buff) \
|
if (!buff) \
|
||||||
return 1; \
|
return 1; \
|
||||||
\
|
\
|
||||||
@@ -1363,7 +1378,7 @@ ble_ ## option ## _ ## name ## _handler (struct config *conf, vector strvec) \
|
@@ -1390,7 +1405,7 @@ ble_ ## option ## _ ## name ## _handler (struct config *conf, vector strvec) \
|
||||||
if (!conf->option) \
|
if (!conf->option) \
|
||||||
return 1; \
|
return 1; \
|
||||||
\
|
\
|
||||||
@ -59,7 +59,7 @@ index a81c051..fbef142 100644
|
|||||||
if (!buff) \
|
if (!buff) \
|
||||||
return 1; \
|
return 1; \
|
||||||
\
|
\
|
||||||
@@ -1466,16 +1481,16 @@ device_handler(struct config *conf, vector strvec)
|
@@ -1493,16 +1508,16 @@ device_handler(struct config *conf, vector strvec)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
26
0014-RH-Fix-nvme-compilation-warning.patch
Normal file
26
0014-RH-Fix-nvme-compilation-warning.patch
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
Date: Fri, 25 Jan 2019 14:54:56 -0600
|
||||||
|
Subject: [PATCH] RH: Fix nvme compilation warning
|
||||||
|
|
||||||
|
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
---
|
||||||
|
libmultipath/nvme/argconfig.h | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/libmultipath/nvme/argconfig.h b/libmultipath/nvme/argconfig.h
|
||||||
|
index adb192b..bfd10ef 100644
|
||||||
|
--- a/libmultipath/nvme/argconfig.h
|
||||||
|
+++ b/libmultipath/nvme/argconfig.h
|
||||||
|
@@ -76,7 +76,7 @@ struct argconfig_commandline_options {
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
-typedef void argconfig_help_func();
|
||||||
|
+typedef void argconfig_help_func(void);
|
||||||
|
void argconfig_append_usage(const char *str);
|
||||||
|
void argconfig_print_help(const char *program_desc,
|
||||||
|
const struct argconfig_commandline_options *options);
|
||||||
|
--
|
||||||
|
2.17.2
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
Name: device-mapper-multipath
|
Name: device-mapper-multipath
|
||||||
Version: 0.7.9
|
Version: 0.7.9
|
||||||
Release: 3.git17a6101%{?dist}
|
Release: 4.git2df6110%{?dist}
|
||||||
Summary: Tools to manage multipath devices using device-mapper
|
Summary: Tools to manage multipath devices using device-mapper
|
||||||
License: GPLv2
|
License: GPLv2
|
||||||
URL: http://christophe.varoqui.free.fr/
|
URL: http://christophe.varoqui.free.fr/
|
||||||
@ -8,17 +8,22 @@ URL: http://christophe.varoqui.free.fr/
|
|||||||
# The source for this package was pulled from upstream's git repo. Use the
|
# The source for this package was pulled from upstream's git repo. Use the
|
||||||
# following command to generate the tarball
|
# following command to generate the tarball
|
||||||
# curl "https://git.opensvc.com/?p=multipath-tools/.git;a=snapshot;h=17a6101;sf=tgz" -o multipath-tools-17a6101.tgz
|
# curl "https://git.opensvc.com/?p=multipath-tools/.git;a=snapshot;h=17a6101;sf=tgz" -o multipath-tools-17a6101.tgz
|
||||||
Source0: multipath-tools-17a6101.tgz
|
Source0: multipath-tools-2df6110.tgz
|
||||||
Source1: multipath.conf
|
Source1: multipath.conf
|
||||||
Patch0001: 0001-libmultipath-dm_is_mpath-cleanup.patch
|
Patch0001: 0001-BZ-1668693-disable-user_friendly_names-for-NetApp.patch
|
||||||
Patch0002: 0002-RH-fixup-udev-rules-for-redhat.patch
|
Patch0002: 0002-libmultipath-handle-existing-paths-in-marginal_path-.patch
|
||||||
Patch0003: 0003-RH-Remove-the-property-blacklist-exception-builtin.patch
|
Patch0003: 0003-multipathd-cleanup-marginal-paths-checking-timers.patch
|
||||||
Patch0004: 0004-RH-don-t-start-without-a-config-file.patch
|
Patch0004: 0004-libmultipath-fix-marginal-paths-queueing-errors.patch
|
||||||
Patch0005: 0005-RH-use-rpm-optflags-if-present.patch
|
Patch0005: 0005-libmultipath-fix-marginal_paths-nr_active-check.patch
|
||||||
Patch0006: 0006-RH-add-mpathconf.patch
|
Patch0006: 0006-RH-fixup-udev-rules-for-redhat.patch
|
||||||
Patch0007: 0007-RH-add-wwids-from-kernel-cmdline-mpath.wwids-with-A.patch
|
Patch0007: 0007-RH-Remove-the-property-blacklist-exception-builtin.patch
|
||||||
Patch0008: 0008-RH-warn-on-invalid-regex-instead-of-failing.patch
|
Patch0008: 0008-RH-don-t-start-without-a-config-file.patch
|
||||||
Patch0009: 0009-RH-reset-default-find_mutipaths-value-to-off.patch
|
Patch0009: 0009-RH-use-rpm-optflags-if-present.patch
|
||||||
|
Patch0010: 0010-RH-add-mpathconf.patch
|
||||||
|
Patch0011: 0011-RH-add-wwids-from-kernel-cmdline-mpath.wwids-with-A.patch
|
||||||
|
Patch0012: 0012-RH-warn-on-invalid-regex-instead-of-failing.patch
|
||||||
|
Patch0013: 0013-RH-reset-default-find_mutipaths-value-to-off.patch
|
||||||
|
Patch0014: 0014-RH-Fix-nvme-compilation-warning.patch
|
||||||
|
|
||||||
# runtime
|
# runtime
|
||||||
Requires: %{name}-libs = %{version}-%{release}
|
Requires: %{name}-libs = %{version}-%{release}
|
||||||
@ -101,7 +106,7 @@ This package contains the files needed to develop applications that use
|
|||||||
device-mapper-multipath's libdmmp C API library
|
device-mapper-multipath's libdmmp C API library
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q -n multipath-tools-17a6101
|
%setup -q -n multipath-tools-2df6110
|
||||||
%patch0001 -p1
|
%patch0001 -p1
|
||||||
%patch0002 -p1
|
%patch0002 -p1
|
||||||
%patch0003 -p1
|
%patch0003 -p1
|
||||||
@ -111,6 +116,11 @@ device-mapper-multipath's libdmmp C API library
|
|||||||
%patch0007 -p1
|
%patch0007 -p1
|
||||||
%patch0008 -p1
|
%patch0008 -p1
|
||||||
%patch0009 -p1
|
%patch0009 -p1
|
||||||
|
%patch0010 -p1
|
||||||
|
%patch0011 -p1
|
||||||
|
%patch0012 -p1
|
||||||
|
%patch0013 -p1
|
||||||
|
%patch0014 -p1
|
||||||
cp %{SOURCE1} .
|
cp %{SOURCE1} .
|
||||||
|
|
||||||
%build
|
%build
|
||||||
@ -222,6 +232,22 @@ fi
|
|||||||
%{_pkgconfdir}/libdmmp.pc
|
%{_pkgconfdir}/libdmmp.pc
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Jan 31 2019 Benjamin Marzinski <bmarzins@redhat.com> - 0.7.9-4.git2df6110
|
||||||
|
- Update Source to latest upstream commit
|
||||||
|
* previous patch 0001-libmultipath-dm_is_mpath-cleanup.patch is included
|
||||||
|
in this commit
|
||||||
|
- Rename files
|
||||||
|
* Previous patches 0002-0009 are now patches 0006-0013
|
||||||
|
- Add 0001-BZ-1668693-disable-user_friendly_names-for-NetApp.patch
|
||||||
|
- Add 0002-libmultipath-handle-existing-paths-in-marginal_path-.patch
|
||||||
|
- Add 0003-multipathd-cleanup-marginal-paths-checking-timers.patch
|
||||||
|
- Add 0004-libmultipath-fix-marginal-paths-queueing-errors.patch
|
||||||
|
- Add 0005-libmultipath-fix-marginal_paths-nr_active-check.patch
|
||||||
|
* The above 5 patches have been submitted upstream
|
||||||
|
- Add 0014-RH-Fix-nvme-compilation-warning.patch
|
||||||
|
* This change is only necessary because of Red Hat compilation
|
||||||
|
differences.
|
||||||
|
|
||||||
* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.7.9-3.git17a6101
|
* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.7.9-3.git17a6101
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
||||||
|
|
||||||
|
2
sources
2
sources
@ -1,2 +1,2 @@
|
|||||||
SHA512 (multipath-tools-17a6101.tgz) = 28c75188ac33aeae58457b56aa5890c277a437ee8a4b061ecaa1d766aa040c74e7c94036939edc3f293f6c795cb94c431540e8ac46ef2e81cecac7aef1fa0ac7
|
SHA512 (multipath-tools-2df6110.tgz) = 5083e95157d2a978c8f5ed234b9c0fa4eced7bce7d4f28d82479b4fc504fc74b4f00ec78ec0a830a44df01de76a40d33af41bedb0731be2afaccfda1fb9e7d0b
|
||||||
SHA512 (multipath.conf) = 71953dce5a68adcf60a942305f5a66023e6f4c4baf53b1bfdb4edf65ed5b8e03db804363c36d1dcfd85591f4766f52b515269904c53b84d7b076da0b80b09942
|
SHA512 (multipath.conf) = 71953dce5a68adcf60a942305f5a66023e6f4c4baf53b1bfdb4edf65ed5b8e03db804363c36d1dcfd85591f4766f52b515269904c53b84d7b076da0b80b09942
|
||||||
|
Loading…
Reference in New Issue
Block a user