device-mapper-multipath-0.9.4-1
Update to the head of the upstream staging branch * Previous patches 0001-0032 are intlcude in the source tarball * Patches 0001-0010 are from the upstream staging branch Rename redhat patches * Previous patches 0033-0044 are not patches 0011-0022 Add dependency on libmount
This commit is contained in:
parent
bf5e5e4891
commit
8e8d008d17
1
.gitignore
vendored
1
.gitignore
vendored
@ -26,3 +26,4 @@ multipath-tools-091027.tar.gz
|
|||||||
/multipath-tools-0.8.9.tgz
|
/multipath-tools-0.8.9.tgz
|
||||||
/multipath-tools-0.9.0.tgz
|
/multipath-tools-0.9.0.tgz
|
||||||
/multipath-tools-0.9.3.tgz
|
/multipath-tools-0.9.3.tgz
|
||||||
|
/multipath-tools-0.9.4.tgz
|
||||||
|
@ -1,35 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Paul Koetsier <github.com@unicast.nl>
|
|
||||||
Date: Thu, 27 Oct 2022 19:29:28 +0200
|
|
||||||
Subject: [PATCH] libmultipath: fix 'show paths format' failure
|
|
||||||
|
|
||||||
Prevent 'multipathd show paths format "%c"' from failing on orphan paths.
|
|
||||||
For orphan paths the checker class isn't set, which caused
|
|
||||||
snprint_path_checker() to fail which in turn caused 'show paths format' to fail
|
|
||||||
when the format string contained "%c".
|
|
||||||
|
|
||||||
Reviewed-by: Martin Wilck <mwilck@suse.com>
|
|
||||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
---
|
|
||||||
libmultipath/print.c | 8 ++++++--
|
|
||||||
1 file changed, 6 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/libmultipath/print.c b/libmultipath/print.c
|
|
||||||
index d7d522c8..3193dbe0 100644
|
|
||||||
--- a/libmultipath/print.c
|
|
||||||
+++ b/libmultipath/print.c
|
|
||||||
@@ -734,8 +734,12 @@ snprint_host_adapter (struct strbuf *buff, const struct path * pp)
|
|
||||||
static int
|
|
||||||
snprint_path_checker (struct strbuf *buff, const struct path * pp)
|
|
||||||
{
|
|
||||||
- const struct checker * c = &pp->checker;
|
|
||||||
- return snprint_str(buff, checker_name(c));
|
|
||||||
+ const char * n = checker_name(&pp->checker);
|
|
||||||
+
|
|
||||||
+ if (n)
|
|
||||||
+ return snprint_str(buff, n);
|
|
||||||
+ else
|
|
||||||
+ return snprint_str(buff, "(null)");
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
159
0001-multipathd-make-pr-registration-consistent.patch
Normal file
159
0001-multipathd-make-pr-registration-consistent.patch
Normal file
@ -0,0 +1,159 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
Date: Tue, 20 Dec 2022 17:41:10 -0600
|
||||||
|
Subject: [PATCH] multipathd: make pr registration consistent
|
||||||
|
|
||||||
|
multipathd was inconsistent on what it did with persistent reservations
|
||||||
|
when a multipath device was created. If a multipath device with a
|
||||||
|
configured reservation key was created during configure(), multipathd
|
||||||
|
would try to read the registered keys using an active path. If it saw a
|
||||||
|
matching key, it would set the prflag, but not attempt to register the
|
||||||
|
key on any of the other paths. This means that if a new path had
|
||||||
|
appeared while multipathd was not running, it wouldn't register the key
|
||||||
|
on this path.
|
||||||
|
|
||||||
|
If the multipath device was created during ev_add_path(), multipathd
|
||||||
|
would used the added path to check if there was a matching key and if
|
||||||
|
there was, register the key only on the added path and then set the
|
||||||
|
prflag. This could be problematic if the device was created with
|
||||||
|
multiple paths, for instance because find_mutipaths was set to "yes" and
|
||||||
|
a second path just appeared. In this case, if the device happened to be
|
||||||
|
only registered on the second path, it would not get registered on the
|
||||||
|
first path.
|
||||||
|
|
||||||
|
If the multipath device was added to multipathd during a call to
|
||||||
|
ev_add_map(), multipathd wouldn't set the prflag or register the key on
|
||||||
|
any paths.
|
||||||
|
|
||||||
|
After a device was created with the prflag set, if a new path appeared
|
||||||
|
before the creation uevent, and multipathd was forced to delay adding
|
||||||
|
it, when it finally updated the multipath device, the key would be
|
||||||
|
registered on all paths, fixing any paths missed during creation.
|
||||||
|
However, if a new path appeared after the creation uevent, the key would
|
||||||
|
only be registered on that new path. Any paths that were missed on
|
||||||
|
creation would stay missed.
|
||||||
|
|
||||||
|
persistent key registration needs to be handled consistently. This
|
||||||
|
patch does so by making sure that however a multipath device is added to
|
||||||
|
multipathd, it will check to see if the configured key is registered. If
|
||||||
|
it is, multipathd will set the prflag and register the key on all the
|
||||||
|
currently active paths.
|
||||||
|
|
||||||
|
When a new path is added, multipathd will use it to check for active
|
||||||
|
keys, as before. But if it finds a matching key and prflag isn't
|
||||||
|
currently set, it will register the key on all paths.
|
||||||
|
|
||||||
|
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
Reviewed-by: Martin Wilck <mwilck@suse.com>
|
||||||
|
---
|
||||||
|
multipathd/main.c | 43 +++++++++++++++++++++++++++++--------------
|
||||||
|
1 file changed, 29 insertions(+), 14 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/multipathd/main.c b/multipathd/main.c
|
||||||
|
index 1e1b254f..f7212d7b 100644
|
||||||
|
--- a/multipathd/main.c
|
||||||
|
+++ b/multipathd/main.c
|
||||||
|
@@ -586,13 +586,26 @@ flush_map_nopaths(struct multipath *mpp, struct vectors *vecs) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
+static void
|
||||||
|
+pr_register_active_paths(struct multipath *mpp)
|
||||||
|
+{
|
||||||
|
+ unsigned int i, j;
|
||||||
|
+ struct path *pp;
|
||||||
|
+ struct pathgroup *pgp;
|
||||||
|
+
|
||||||
|
+ vector_foreach_slot (mpp->pg, pgp, i) {
|
||||||
|
+ vector_foreach_slot (pgp->paths, pp, j) {
|
||||||
|
+ if ((pp->state == PATH_UP) || (pp->state == PATH_GHOST))
|
||||||
|
+ mpath_pr_event_handle(pp);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static int
|
||||||
|
update_map (struct multipath *mpp, struct vectors *vecs, int new_map)
|
||||||
|
{
|
||||||
|
int retries = 3;
|
||||||
|
char *params __attribute__((cleanup(cleanup_charp))) = NULL;
|
||||||
|
- struct path *pp;
|
||||||
|
- int i;
|
||||||
|
|
||||||
|
retry:
|
||||||
|
condlog(4, "%s: updating new map", mpp->alias);
|
||||||
|
@@ -609,15 +622,6 @@ retry:
|
||||||
|
|
||||||
|
mpp->action = ACT_RELOAD;
|
||||||
|
|
||||||
|
- if (mpp->prflag) {
|
||||||
|
- vector_foreach_slot(mpp->paths, pp, i) {
|
||||||
|
- if ((pp->state == PATH_UP) || (pp->state == PATH_GHOST)) {
|
||||||
|
- /* persistent reservation check*/
|
||||||
|
- mpath_pr_event_handle(pp);
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
if (setup_map(mpp, ¶ms, vecs)) {
|
||||||
|
condlog(0, "%s: failed to setup new map in update", mpp->alias);
|
||||||
|
retries = -1;
|
||||||
|
@@ -643,6 +647,11 @@ fail:
|
||||||
|
|
||||||
|
sync_map_state(mpp);
|
||||||
|
|
||||||
|
+ if (!mpp->prflag)
|
||||||
|
+ update_map_pr(mpp);
|
||||||
|
+ if (mpp->prflag)
|
||||||
|
+ pr_register_active_paths(mpp);
|
||||||
|
+
|
||||||
|
if (retries < 0)
|
||||||
|
condlog(0, "%s: failed reload in new map update", mpp->alias);
|
||||||
|
return 0;
|
||||||
|
@@ -1191,6 +1200,7 @@ ev_add_path (struct path * pp, struct vectors * vecs, int need_do_map)
|
||||||
|
int start_waiter = 0;
|
||||||
|
int ret;
|
||||||
|
int ro;
|
||||||
|
+ unsigned char prflag = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* need path UID to go any further
|
||||||
|
@@ -1234,6 +1244,8 @@ rescan:
|
||||||
|
|
||||||
|
verify_paths(mpp);
|
||||||
|
mpp->action = ACT_RELOAD;
|
||||||
|
+ prflag = mpp->prflag;
|
||||||
|
+ mpath_pr_event_handle(pp);
|
||||||
|
} else {
|
||||||
|
if (!should_multipath(pp, vecs->pathvec, vecs->mpvec)) {
|
||||||
|
orphan_path(pp, "only one path");
|
||||||
|
@@ -1252,9 +1264,6 @@ rescan:
|
||||||
|
goto fail; /* leave path added to pathvec */
|
||||||
|
}
|
||||||
|
|
||||||
|
- /* persistent reservation check*/
|
||||||
|
- mpath_pr_event_handle(pp);
|
||||||
|
-
|
||||||
|
/* ro check - if new path is ro, force map to be ro as well */
|
||||||
|
ro = sysfs_get_ro(pp);
|
||||||
|
if (ro == 1)
|
||||||
|
@@ -1319,6 +1328,10 @@ rescan:
|
||||||
|
sync_map_state(mpp);
|
||||||
|
|
||||||
|
if (retries >= 0) {
|
||||||
|
+ if (start_waiter)
|
||||||
|
+ update_map_pr(mpp);
|
||||||
|
+ if (mpp->prflag && !prflag)
|
||||||
|
+ pr_register_active_paths(mpp);
|
||||||
|
condlog(2, "%s [%s]: path added to devmap %s",
|
||||||
|
pp->dev, pp->dev_t, mpp->alias);
|
||||||
|
return 0;
|
||||||
|
@@ -2852,6 +2865,8 @@ configure (struct vectors * vecs, enum force_reload_types reload_type)
|
||||||
|
if (remember_wwid(mpp->wwid) == 1)
|
||||||
|
trigger_paths_udev_change(mpp, true);
|
||||||
|
update_map_pr(mpp);
|
||||||
|
+ if (mpp->prflag)
|
||||||
|
+ pr_register_active_paths(mpp);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
@ -1,41 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Martin Wilck <mwilck@suse.com>
|
|
||||||
Date: Fri, 28 Oct 2022 18:22:59 +0200
|
|
||||||
Subject: [PATCH] fixup! Makefile.inc: fix man and include paths
|
|
||||||
|
|
||||||
Paths would now be wrong with the default (empty) prefix.
|
|
||||||
Fix it.
|
|
||||||
|
|
||||||
Fixes: 2b2885c ("Makefile.inc: fix man and include paths")
|
|
||||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
|
||||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
---
|
|
||||||
Makefile.inc | 8 ++++----
|
|
||||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/Makefile.inc b/Makefile.inc
|
|
||||||
index 4d843ce5..32001434 100644
|
|
||||||
--- a/Makefile.inc
|
|
||||||
+++ b/Makefile.inc
|
|
||||||
@@ -89,9 +89,9 @@ modulesloaddir = $(prefix)/$(SYSTEMDPATH)/modules-load.d
|
|
||||||
multipathdir = $(TOPDIR)/libmultipath
|
|
||||||
daemondir = $(TOPDIR)/multipathd
|
|
||||||
mpathutildir = $(TOPDIR)/libmpathutil
|
|
||||||
-man8dir = $(prefix)/share/man/man8
|
|
||||||
-man5dir = $(prefix)/share/man/man5
|
|
||||||
-man3dir = $(prefix)/share/man/man3
|
|
||||||
+man8dir = $(usr_prefix)/share/man/man8
|
|
||||||
+man5dir = $(usr_prefix)/share/man/man5
|
|
||||||
+man3dir = $(usr_prefix)/share/man/man3
|
|
||||||
syslibdir = $(prefix)/$(LIB)
|
|
||||||
usrlibdir = $(usr_prefix)/$(LIB)
|
|
||||||
libdir = $(prefix)/$(LIB)/multipath
|
|
||||||
@@ -102,7 +102,7 @@ mpathvaliddir = $(TOPDIR)/libmpathvalid
|
|
||||||
thirdpartydir = $(TOPDIR)/third-party
|
|
||||||
libdmmpdir = $(TOPDIR)/libdmmp
|
|
||||||
nvmedir = $(TOPDIR)/libmultipath/nvme
|
|
||||||
-includedir = $(prefix)/include
|
|
||||||
+includedir = $(usr_prefix)/include
|
|
||||||
pkgconfdir = $(usrlibdir)/pkgconfig
|
|
||||||
plugindir := $(prefix)/$(LIB)/multipath
|
|
||||||
configdir := $(prefix)/etc/multipath/conf.d
|
|
166
0002-libmultipath-make-prflag-an-enum.patch
Normal file
166
0002-libmultipath-make-prflag-an-enum.patch
Normal file
@ -0,0 +1,166 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
Date: Tue, 20 Dec 2022 17:41:11 -0600
|
||||||
|
Subject: [PATCH] libmultipath: make prflag an enum
|
||||||
|
|
||||||
|
In preparation for a future patch, make prflag an enum, and change the
|
||||||
|
reply of cli_getprstatus() to a string.
|
||||||
|
|
||||||
|
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
Reviewed-by: Martin Wilck <mwilck@suse.com>
|
||||||
|
---
|
||||||
|
libmpathpersist/mpath_persist_int.c | 2 +-
|
||||||
|
libmultipath/structs.h | 8 +++++++-
|
||||||
|
multipathd/cli_handlers.c | 17 +++++++++--------
|
||||||
|
multipathd/main.c | 14 +++++++-------
|
||||||
|
4 files changed, 24 insertions(+), 17 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libmpathpersist/mpath_persist_int.c b/libmpathpersist/mpath_persist_int.c
|
||||||
|
index 6924b379..a84d9474 100644
|
||||||
|
--- a/libmpathpersist/mpath_persist_int.c
|
||||||
|
+++ b/libmpathpersist/mpath_persist_int.c
|
||||||
|
@@ -783,7 +783,7 @@ int update_map_pr(struct multipath *mpp)
|
||||||
|
|
||||||
|
if (isFound)
|
||||||
|
{
|
||||||
|
- mpp->prflag = 1;
|
||||||
|
+ mpp->prflag = PRFLAG_SET;
|
||||||
|
condlog(2, "%s: prflag flag set.", mpp->alias );
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/libmultipath/structs.h b/libmultipath/structs.h
|
||||||
|
index 9e2c1ab0..f2265300 100644
|
||||||
|
--- a/libmultipath/structs.h
|
||||||
|
+++ b/libmultipath/structs.h
|
||||||
|
@@ -375,6 +375,12 @@ struct path {
|
||||||
|
|
||||||
|
typedef int (pgpolicyfn) (struct multipath *, vector);
|
||||||
|
|
||||||
|
+
|
||||||
|
+enum prflag_value {
|
||||||
|
+ PRFLAG_UNSET,
|
||||||
|
+ PRFLAG_SET,
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
struct multipath {
|
||||||
|
char wwid[WWID_SIZE];
|
||||||
|
char alias_old[WWID_SIZE];
|
||||||
|
@@ -449,7 +455,7 @@ struct multipath {
|
||||||
|
int prkey_source;
|
||||||
|
struct be64 reservation_key;
|
||||||
|
uint8_t sa_flags;
|
||||||
|
- unsigned char prflag;
|
||||||
|
+ int prflag;
|
||||||
|
int all_tg_pt;
|
||||||
|
struct gen_multipath generic_mp;
|
||||||
|
bool fpin_must_reload;
|
||||||
|
diff --git a/multipathd/cli_handlers.c b/multipathd/cli_handlers.c
|
||||||
|
index e65fb75c..7ee2729f 100644
|
||||||
|
--- a/multipathd/cli_handlers.c
|
||||||
|
+++ b/multipathd/cli_handlers.c
|
||||||
|
@@ -1277,6 +1277,10 @@ cli_shutdown (void * v, struct strbuf *reply, void * data)
|
||||||
|
static int
|
||||||
|
cli_getprstatus (void * v, struct strbuf *reply, void * data)
|
||||||
|
{
|
||||||
|
+ static const char * const prflag_str[] = {
|
||||||
|
+ [PRFLAG_UNSET] = "unset\n",
|
||||||
|
+ [PRFLAG_SET] = "set\n",
|
||||||
|
+ };
|
||||||
|
struct multipath * mpp;
|
||||||
|
struct vectors * vecs = (struct vectors *)data;
|
||||||
|
char * param = get_keyparam(v, KEY_MAP);
|
||||||
|
@@ -1287,10 +1291,7 @@ cli_getprstatus (void * v, struct strbuf *reply, void * data)
|
||||||
|
if (!mpp)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
- condlog(3, "%s: prflag = %u", param, (unsigned int)mpp->prflag);
|
||||||
|
-
|
||||||
|
- if (print_strbuf(reply, "%d", mpp->prflag) < 0)
|
||||||
|
- return 1;
|
||||||
|
+ append_strbuf_str(reply, prflag_str[mpp->prflag]);
|
||||||
|
|
||||||
|
condlog(3, "%s: reply = %s", param, get_strbuf_str(reply));
|
||||||
|
|
||||||
|
@@ -1310,8 +1311,8 @@ cli_setprstatus(void * v, struct strbuf *reply, void * data)
|
||||||
|
if (!mpp)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
- if (!mpp->prflag) {
|
||||||
|
- mpp->prflag = 1;
|
||||||
|
+ if (mpp->prflag != PRFLAG_SET) {
|
||||||
|
+ mpp->prflag = PRFLAG_SET;
|
||||||
|
condlog(2, "%s: prflag set", param);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1332,8 +1333,8 @@ cli_unsetprstatus(void * v, struct strbuf *reply, void * data)
|
||||||
|
if (!mpp)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
- if (mpp->prflag) {
|
||||||
|
- mpp->prflag = 0;
|
||||||
|
+ if (mpp->prflag != PRFLAG_UNSET) {
|
||||||
|
+ mpp->prflag = PRFLAG_UNSET;
|
||||||
|
condlog(2, "%s: prflag unset", param);
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/multipathd/main.c b/multipathd/main.c
|
||||||
|
index f7212d7b..722235c7 100644
|
||||||
|
--- a/multipathd/main.c
|
||||||
|
+++ b/multipathd/main.c
|
||||||
|
@@ -647,9 +647,9 @@ fail:
|
||||||
|
|
||||||
|
sync_map_state(mpp);
|
||||||
|
|
||||||
|
- if (!mpp->prflag)
|
||||||
|
+ if (mpp->prflag == PRFLAG_UNSET)
|
||||||
|
update_map_pr(mpp);
|
||||||
|
- if (mpp->prflag)
|
||||||
|
+ if (mpp->prflag == PRFLAG_SET)
|
||||||
|
pr_register_active_paths(mpp);
|
||||||
|
|
||||||
|
if (retries < 0)
|
||||||
|
@@ -1200,7 +1200,7 @@ ev_add_path (struct path * pp, struct vectors * vecs, int need_do_map)
|
||||||
|
int start_waiter = 0;
|
||||||
|
int ret;
|
||||||
|
int ro;
|
||||||
|
- unsigned char prflag = 0;
|
||||||
|
+ unsigned char prflag = PRFLAG_UNSET;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* need path UID to go any further
|
||||||
|
@@ -1330,7 +1330,7 @@ rescan:
|
||||||
|
if (retries >= 0) {
|
||||||
|
if (start_waiter)
|
||||||
|
update_map_pr(mpp);
|
||||||
|
- if (mpp->prflag && !prflag)
|
||||||
|
+ if (mpp->prflag == PRFLAG_SET && prflag == PRFLAG_UNSET)
|
||||||
|
pr_register_active_paths(mpp);
|
||||||
|
condlog(2, "%s [%s]: path added to devmap %s",
|
||||||
|
pp->dev, pp->dev_t, mpp->alias);
|
||||||
|
@@ -2492,7 +2492,7 @@ check_path (struct vectors * vecs, struct path * pp, unsigned int ticks)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (newstate == PATH_UP || newstate == PATH_GHOST) {
|
||||||
|
- if (pp->mpp->prflag) {
|
||||||
|
+ if (pp->mpp->prflag == PRFLAG_SET) {
|
||||||
|
/*
|
||||||
|
* Check Persistent Reservation.
|
||||||
|
*/
|
||||||
|
@@ -2865,7 +2865,7 @@ configure (struct vectors * vecs, enum force_reload_types reload_type)
|
||||||
|
if (remember_wwid(mpp->wwid) == 1)
|
||||||
|
trigger_paths_udev_change(mpp, true);
|
||||||
|
update_map_pr(mpp);
|
||||||
|
- if (mpp->prflag)
|
||||||
|
+ if (mpp->prflag == PRFLAG_SET)
|
||||||
|
pr_register_active_paths(mpp);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -3840,7 +3840,7 @@ void * mpath_pr_event_handler_fn (void * pathp )
|
||||||
|
{
|
||||||
|
condlog(0,"%s: Reservation registration failed. Error: %d", pp->dev, ret);
|
||||||
|
}
|
||||||
|
- mpp->prflag = 1;
|
||||||
|
+ mpp->prflag = PRFLAG_SET;
|
||||||
|
|
||||||
|
free(param);
|
||||||
|
out:
|
@ -1,65 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Martin Wilck <mwilck@suse.com>
|
|
||||||
Date: Thu, 27 Oct 2022 17:09:52 +0200
|
|
||||||
Subject: [PATCH] multipath-tools: Makefile.inc: Fix paths for systemd
|
|
||||||
|
|
||||||
With prefix=/usr, systemd files were installed under /usr/usr/lib,
|
|
||||||
which is bogus. Clean this up, and document how to handle systemd's
|
|
||||||
"rootprefix" options. Remove the previous SYSTEMDPATH option.
|
|
||||||
|
|
||||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
|
||||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
---
|
|
||||||
Makefile.inc | 21 ++++++++++++---------
|
|
||||||
1 file changed, 12 insertions(+), 9 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/Makefile.inc b/Makefile.inc
|
|
||||||
index 32001434..351358a9 100644
|
|
||||||
--- a/Makefile.inc
|
|
||||||
+++ b/Makefile.inc
|
|
||||||
@@ -53,10 +53,6 @@ ifndef SYSTEMD
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
-ifndef SYSTEMDPATH
|
|
||||||
- SYSTEMDPATH=usr/lib
|
|
||||||
-endif
|
|
||||||
-
|
|
||||||
ifndef DEVMAPPER_INCDIR
|
|
||||||
ifeq ($(shell $(PKGCONFIG) --modversion devmapper >/dev/null 2>&1 && echo 1), 1)
|
|
||||||
DEVMAPPER_INCDIR = $(shell $(PKGCONFIG) --variable=includedir devmapper)
|
|
||||||
@@ -78,14 +74,22 @@ ifndef LINUX_HEADERS_INCDIR
|
|
||||||
LINUX_HEADERS_INCDIR = /usr/include
|
|
||||||
endif
|
|
||||||
|
|
||||||
+# Paths. All these can be overridden on the "make" command line.
|
|
||||||
prefix =
|
|
||||||
+# Prefix for binaries
|
|
||||||
exec_prefix = $(prefix)
|
|
||||||
+# Prefix for non-essential libraries (libdmmp)
|
|
||||||
usr_prefix = $(prefix)
|
|
||||||
+# Where to install systemd-related files. systemd is usually installed under /usr
|
|
||||||
+# Note: some systemd installations use separate "prefix" and "rootprefix".
|
|
||||||
+# In this case, override only unitdir to use systemd's "rootprefix" instead of $(systemd_prefix)
|
|
||||||
+systemd_prefix := /usr
|
|
||||||
+unitdir := $(systemd_prefix)/lib/systemd/system
|
|
||||||
+tmpfilesdir := $(systemd_prefix)/lib/tmpfiles.d
|
|
||||||
+modulesloaddir := $(systemd_prefix)/lib/modules-load.d
|
|
||||||
+libudevdir := $(systemd_prefix)/lib/udev
|
|
||||||
+udevrulesdir := $(libudevdir)/rules.d
|
|
||||||
bindir = $(exec_prefix)/sbin
|
|
||||||
-libudevdir = $(prefix)/$(SYSTEMDPATH)/udev
|
|
||||||
-tmpfilesdir = $(prefix)/$(SYSTEMDPATH)/tmpfiles.d
|
|
||||||
-udevrulesdir = $(libudevdir)/rules.d
|
|
||||||
-modulesloaddir = $(prefix)/$(SYSTEMDPATH)/modules-load.d
|
|
||||||
multipathdir = $(TOPDIR)/libmultipath
|
|
||||||
daemondir = $(TOPDIR)/multipathd
|
|
||||||
mpathutildir = $(TOPDIR)/libmpathutil
|
|
||||||
@@ -95,7 +99,6 @@ man3dir = $(usr_prefix)/share/man/man3
|
|
||||||
syslibdir = $(prefix)/$(LIB)
|
|
||||||
usrlibdir = $(usr_prefix)/$(LIB)
|
|
||||||
libdir = $(prefix)/$(LIB)/multipath
|
|
||||||
-unitdir = $(prefix)/$(SYSTEMDPATH)/systemd/system
|
|
||||||
mpathpersistdir = $(TOPDIR)/libmpathpersist
|
|
||||||
mpathcmddir = $(TOPDIR)/libmpathcmd
|
|
||||||
mpathvaliddir = $(TOPDIR)/libmpathvalid
|
|
152
0003-multipathd-handle-no-active-paths-in-update_map_pr.patch
Normal file
152
0003-multipathd-handle-no-active-paths-in-update_map_pr.patch
Normal file
@ -0,0 +1,152 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
Date: Tue, 20 Dec 2022 17:41:12 -0600
|
||||||
|
Subject: [PATCH] multipathd: handle no active paths in update_map_pr
|
||||||
|
|
||||||
|
When a multipath device is first created, if it has a reservation key
|
||||||
|
configured, update_map_pr() will check for a matching key on the active
|
||||||
|
paths. If there were no active paths to check with, multipathd was
|
||||||
|
leaving mpp->prflag in PRFLAG_UNSET, as if there were no matching keys.
|
||||||
|
It's possible that when update_map_pr() is called, all the paths will be
|
||||||
|
in the PATH_PENDING state because the checkers haven't completed yet. In
|
||||||
|
this case, multipathd was treating the device as having no registered
|
||||||
|
keys without ever checking.
|
||||||
|
|
||||||
|
To solve this, multipath devices now start with prflag = PRFLAG_UNKNOWN.
|
||||||
|
It will remain in this state until multipathd actually tries to get the
|
||||||
|
registered keys down a path. If the map is in this state, it will check
|
||||||
|
newly active paths, and if it finds a matching key, it will register
|
||||||
|
the key down all active paths.
|
||||||
|
|
||||||
|
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
Reviewed-by: Martin Wilck <mwilck@suse.com>
|
||||||
|
---
|
||||||
|
libmpathpersist/mpath_persist_int.c | 8 ++++++++
|
||||||
|
libmultipath/structs.h | 1 +
|
||||||
|
multipathd/cli_handlers.c | 1 +
|
||||||
|
multipathd/main.c | 19 ++++++++++++++-----
|
||||||
|
4 files changed, 24 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libmpathpersist/mpath_persist_int.c b/libmpathpersist/mpath_persist_int.c
|
||||||
|
index a84d9474..8b52b746 100644
|
||||||
|
--- a/libmpathpersist/mpath_persist_int.c
|
||||||
|
+++ b/libmpathpersist/mpath_persist_int.c
|
||||||
|
@@ -738,6 +738,7 @@ int update_map_pr(struct multipath *mpp)
|
||||||
|
if (!get_be64(mpp->reservation_key))
|
||||||
|
{
|
||||||
|
/* Nothing to do. Assuming pr mgmt feature is disabled*/
|
||||||
|
+ mpp->prflag = PRFLAG_UNSET;
|
||||||
|
condlog(4, "%s: reservation_key not set in multipath.conf",
|
||||||
|
mpp->alias);
|
||||||
|
return MPATH_PR_SUCCESS;
|
||||||
|
@@ -749,6 +750,13 @@ int update_map_pr(struct multipath *mpp)
|
||||||
|
condlog(0,"%s : failed to alloc resp in update_map_pr", mpp->alias);
|
||||||
|
return MPATH_PR_OTHER;
|
||||||
|
}
|
||||||
|
+ if (count_active_paths(mpp) == 0)
|
||||||
|
+ {
|
||||||
|
+ condlog(0,"%s: No available paths to check pr status",
|
||||||
|
+ mpp->alias);
|
||||||
|
+ return MPATH_PR_OTHER;
|
||||||
|
+ }
|
||||||
|
+ mpp->prflag = PRFLAG_UNSET;
|
||||||
|
ret = mpath_prin_activepath(mpp, MPATH_PRIN_RKEY_SA, resp, noisy);
|
||||||
|
|
||||||
|
if (ret != MPATH_PR_SUCCESS )
|
||||||
|
diff --git a/libmultipath/structs.h b/libmultipath/structs.h
|
||||||
|
index f2265300..e2294323 100644
|
||||||
|
--- a/libmultipath/structs.h
|
||||||
|
+++ b/libmultipath/structs.h
|
||||||
|
@@ -377,6 +377,7 @@ typedef int (pgpolicyfn) (struct multipath *, vector);
|
||||||
|
|
||||||
|
|
||||||
|
enum prflag_value {
|
||||||
|
+ PRFLAG_UNKNOWN,
|
||||||
|
PRFLAG_UNSET,
|
||||||
|
PRFLAG_SET,
|
||||||
|
};
|
||||||
|
diff --git a/multipathd/cli_handlers.c b/multipathd/cli_handlers.c
|
||||||
|
index 7ee2729f..ec5db1b8 100644
|
||||||
|
--- a/multipathd/cli_handlers.c
|
||||||
|
+++ b/multipathd/cli_handlers.c
|
||||||
|
@@ -1278,6 +1278,7 @@ static int
|
||||||
|
cli_getprstatus (void * v, struct strbuf *reply, void * data)
|
||||||
|
{
|
||||||
|
static const char * const prflag_str[] = {
|
||||||
|
+ [PRFLAG_UNKNOWN] = "unknown\n",
|
||||||
|
[PRFLAG_UNSET] = "unset\n",
|
||||||
|
[PRFLAG_SET] = "set\n",
|
||||||
|
};
|
||||||
|
diff --git a/multipathd/main.c b/multipathd/main.c
|
||||||
|
index 722235c7..bdeffe76 100644
|
||||||
|
--- a/multipathd/main.c
|
||||||
|
+++ b/multipathd/main.c
|
||||||
|
@@ -647,7 +647,7 @@ fail:
|
||||||
|
|
||||||
|
sync_map_state(mpp);
|
||||||
|
|
||||||
|
- if (mpp->prflag == PRFLAG_UNSET)
|
||||||
|
+ if (mpp->prflag != PRFLAG_SET)
|
||||||
|
update_map_pr(mpp);
|
||||||
|
if (mpp->prflag == PRFLAG_SET)
|
||||||
|
pr_register_active_paths(mpp);
|
||||||
|
@@ -1330,7 +1330,7 @@ rescan:
|
||||||
|
if (retries >= 0) {
|
||||||
|
if (start_waiter)
|
||||||
|
update_map_pr(mpp);
|
||||||
|
- if (mpp->prflag == PRFLAG_SET && prflag == PRFLAG_UNSET)
|
||||||
|
+ if (mpp->prflag == PRFLAG_SET && prflag != PRFLAG_SET)
|
||||||
|
pr_register_active_paths(mpp);
|
||||||
|
condlog(2, "%s [%s]: path added to devmap %s",
|
||||||
|
pp->dev, pp->dev_t, mpp->alias);
|
||||||
|
@@ -2492,13 +2492,17 @@ check_path (struct vectors * vecs, struct path * pp, unsigned int ticks)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (newstate == PATH_UP || newstate == PATH_GHOST) {
|
||||||
|
- if (pp->mpp->prflag == PRFLAG_SET) {
|
||||||
|
+ if (pp->mpp->prflag != PRFLAG_UNSET) {
|
||||||
|
+ int prflag = pp->mpp->prflag;
|
||||||
|
/*
|
||||||
|
* Check Persistent Reservation.
|
||||||
|
*/
|
||||||
|
condlog(2, "%s: checking persistent "
|
||||||
|
"reservation registration", pp->dev);
|
||||||
|
mpath_pr_event_handle(pp);
|
||||||
|
+ if (pp->mpp->prflag == PRFLAG_SET &&
|
||||||
|
+ prflag != PRFLAG_SET)
|
||||||
|
+ pr_register_active_paths(pp->mpp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -3788,6 +3792,7 @@ void * mpath_pr_event_handler_fn (void * pathp )
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ mpp->prflag = PRFLAG_UNSET;
|
||||||
|
ret = prin_do_scsi_ioctl(pp->dev, MPATH_PRIN_RKEY_SA, resp, 0);
|
||||||
|
if (ret != MPATH_PR_SUCCESS )
|
||||||
|
{
|
||||||
|
@@ -3858,12 +3863,12 @@ int mpath_pr_event_handle(struct path *pp)
|
||||||
|
struct multipath * mpp;
|
||||||
|
|
||||||
|
if (pp->bus != SYSFS_BUS_SCSI)
|
||||||
|
- return 0;
|
||||||
|
+ goto no_pr;
|
||||||
|
|
||||||
|
mpp = pp->mpp;
|
||||||
|
|
||||||
|
if (!get_be64(mpp->reservation_key))
|
||||||
|
- return -1;
|
||||||
|
+ goto no_pr;
|
||||||
|
|
||||||
|
pthread_attr_init(&attr);
|
||||||
|
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
|
||||||
|
@@ -3876,4 +3881,8 @@ int mpath_pr_event_handle(struct path *pp)
|
||||||
|
pthread_attr_destroy(&attr);
|
||||||
|
rc = pthread_join(thread, NULL);
|
||||||
|
return 0;
|
||||||
|
+
|
||||||
|
+no_pr:
|
||||||
|
+ pp->mpp->prflag = PRFLAG_UNSET;
|
||||||
|
+ return 0;
|
||||||
|
}
|
@ -1,113 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Martin Wilck <mwilck@suse.com>
|
|
||||||
Date: Thu, 27 Oct 2022 13:24:34 +0200
|
|
||||||
Subject: [PATCH] multipath-tools: Makefile.inc: don't take values from
|
|
||||||
environment
|
|
||||||
|
|
||||||
Don't use environment variables to initialize LIB, RUN, SYSTEMD, SYSTEMDPATH,
|
|
||||||
DEVMAPPER_INCDIR, LIBUDEV_INCDIR, and LINUX_HEADERS_INCDIR. Taking
|
|
||||||
such variables from the environment is generally discouraged
|
|
||||||
(see https://www.gnu.org/software/make/manual/html_node/Environment.html).
|
|
||||||
|
|
||||||
Overriding variables from the commandline is still possible
|
|
||||||
(https://www.gnu.org/software/make/manual/html_node/Overriding.html).
|
|
||||||
So now, when building multipath-tools, rather then running
|
|
||||||
"RUN=/somedir make", users need to run "make RUN=/somedir".
|
|
||||||
|
|
||||||
This simplifies the Makefile without losing important functionality.
|
|
||||||
|
|
||||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
|
||||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
---
|
|
||||||
Makefile.inc | 60 ++++++++++++++++++++++------------------------------
|
|
||||||
1 file changed, 25 insertions(+), 35 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/Makefile.inc b/Makefile.inc
|
|
||||||
index 351358a9..d897ac7a 100644
|
|
||||||
--- a/Makefile.inc
|
|
||||||
+++ b/Makefile.inc
|
|
||||||
@@ -20,59 +20,49 @@ SCSI_DH_MODULES_PRELOAD :=
|
|
||||||
|
|
||||||
EXTRAVERSION := $(shell rev=$$(git rev-parse --short=7 HEAD 2>/dev/null); echo $${rev:+-g$$rev})
|
|
||||||
|
|
||||||
+# PKGCONFIG must be read from the environment to enable compilation
|
|
||||||
+# in Debian multiarch setups
|
|
||||||
PKGCONFIG ?= pkg-config
|
|
||||||
|
|
||||||
ifeq ($(TOPDIR),)
|
|
||||||
TOPDIR = ..
|
|
||||||
endif
|
|
||||||
|
|
||||||
-ifndef LIB
|
|
||||||
- ifeq ($(shell test -d /lib64 && echo 1),1)
|
|
||||||
- LIB=lib64
|
|
||||||
- else
|
|
||||||
- LIB=lib
|
|
||||||
- endif
|
|
||||||
+ifeq ($(shell test -d /lib64 && echo 1),1)
|
|
||||||
+ LIB=lib64
|
|
||||||
+else
|
|
||||||
+ LIB=lib
|
|
||||||
endif
|
|
||||||
|
|
||||||
-ifndef RUN
|
|
||||||
- ifeq ($(shell test -L /var/run -o ! -d /var/run && echo 1),1)
|
|
||||||
- RUN=run
|
|
||||||
- else
|
|
||||||
- RUN=var/run
|
|
||||||
- endif
|
|
||||||
+ifeq ($(shell test -L /var/run -o ! -d /var/run && echo 1),1)
|
|
||||||
+ RUN=run
|
|
||||||
+else
|
|
||||||
+ RUN=var/run
|
|
||||||
endif
|
|
||||||
|
|
||||||
-ifndef SYSTEMD
|
|
||||||
- ifeq ($(shell $(PKGCONFIG) --modversion libsystemd >/dev/null 2>&1 && echo 1), 1)
|
|
||||||
- SYSTEMD = $(shell $(PKGCONFIG) --modversion libsystemd | awk '{print $$1}')
|
|
||||||
- else
|
|
||||||
- ifeq ($(shell systemctl --version >/dev/null 2>&1 && echo 1), 1)
|
|
||||||
- SYSTEMD = $(shell systemctl --version 2> /dev/null | \
|
|
||||||
- sed -n 's/systemd \([0-9]*\).*/\1/p')
|
|
||||||
- endif
|
|
||||||
+ifeq ($(shell $(PKGCONFIG) --modversion libsystemd >/dev/null 2>&1 && echo 1), 1)
|
|
||||||
+ SYSTEMD = $(shell $(PKGCONFIG) --modversion libsystemd | awk '{print $$1}')
|
|
||||||
+else
|
|
||||||
+ ifeq ($(shell systemctl --version >/dev/null 2>&1 && echo 1), 1)
|
|
||||||
+ SYSTEMD = $(shell systemctl --version 2> /dev/null | \
|
|
||||||
+ sed -n 's/systemd \([0-9]*\).*/\1/p')
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
-ifndef DEVMAPPER_INCDIR
|
|
||||||
- ifeq ($(shell $(PKGCONFIG) --modversion devmapper >/dev/null 2>&1 && echo 1), 1)
|
|
||||||
- DEVMAPPER_INCDIR = $(shell $(PKGCONFIG) --variable=includedir devmapper)
|
|
||||||
- else
|
|
||||||
- DEVMAPPER_INCDIR = /usr/include
|
|
||||||
- endif
|
|
||||||
+ifeq ($(shell $(PKGCONFIG) --modversion devmapper >/dev/null 2>&1 && echo 1), 1)
|
|
||||||
+ DEVMAPPER_INCDIR = $(shell $(PKGCONFIG) --variable=includedir devmapper)
|
|
||||||
+else
|
|
||||||
+ DEVMAPPER_INCDIR = /usr/include
|
|
||||||
endif
|
|
||||||
|
|
||||||
-ifndef LIBUDEV_INCDIR
|
|
||||||
- ifeq ($(shell $(PKGCONFIG) --modversion libudev >/dev/null 2>&1 && echo 1), 1)
|
|
||||||
- LIBUDEV_INCDIR = $(shell $(PKGCONFIG) --variable=includedir libudev)
|
|
||||||
- else
|
|
||||||
- LIBUDEV_INCDIR = /usr/include
|
|
||||||
- endif
|
|
||||||
+ifeq ($(shell $(PKGCONFIG) --modversion libudev >/dev/null 2>&1 && echo 1), 1)
|
|
||||||
+ LIBUDEV_INCDIR = $(shell $(PKGCONFIG) --variable=includedir libudev)
|
|
||||||
+else
|
|
||||||
+ LIBUDEV_INCDIR = /usr/include
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Allow user to override default location.
|
|
||||||
-ifndef LINUX_HEADERS_INCDIR
|
|
||||||
- LINUX_HEADERS_INCDIR = /usr/include
|
|
||||||
-endif
|
|
||||||
+LINUX_HEADERS_INCDIR = /usr/include
|
|
||||||
|
|
||||||
# Paths. All these can be overridden on the "make" command line.
|
|
||||||
prefix =
|
|
@ -0,0 +1,24 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
Date: Tue, 20 Dec 2022 17:41:13 -0600
|
||||||
|
Subject: [PATCH] multipathd: add missing newline to cli_del_map reply
|
||||||
|
|
||||||
|
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
Reviewed-by: Martin Wilck <mwilck@suse.com>
|
||||||
|
---
|
||||||
|
multipathd/cli_handlers.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/multipathd/cli_handlers.c b/multipathd/cli_handlers.c
|
||||||
|
index ec5db1b8..44bf43df 100644
|
||||||
|
--- a/multipathd/cli_handlers.c
|
||||||
|
+++ b/multipathd/cli_handlers.c
|
||||||
|
@@ -760,7 +760,7 @@ cli_del_map (void * v, struct strbuf *reply, void * data)
|
||||||
|
}
|
||||||
|
rc = ev_remove_map(param, alias, minor, vecs);
|
||||||
|
if (rc == 2)
|
||||||
|
- append_strbuf_str(reply, "delayed");
|
||||||
|
+ append_strbuf_str(reply, "delayed\n");
|
||||||
|
|
||||||
|
free(alias);
|
||||||
|
return rc;
|
@ -0,0 +1,33 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
Date: Tue, 20 Dec 2022 17:41:14 -0600
|
||||||
|
Subject: [PATCH] libmultipath: skip extra vector work in remove_maps
|
||||||
|
|
||||||
|
Instead of repeatedly removing the first vector element, and shifting
|
||||||
|
the rest to fill in, call remove_map() without a vector, so it just
|
||||||
|
frees the devices. The vector will be completely cleaned up by
|
||||||
|
vector_free() immediately afterwards.
|
||||||
|
|
||||||
|
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
Reviewed-by: Martin Wilck <mwilck@suse.com>
|
||||||
|
---
|
||||||
|
libmultipath/structs_vec.c | 6 ++----
|
||||||
|
1 file changed, 2 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libmultipath/structs_vec.c b/libmultipath/structs_vec.c
|
||||||
|
index 5a618767..f3fdc5a6 100644
|
||||||
|
--- a/libmultipath/structs_vec.c
|
||||||
|
+++ b/libmultipath/structs_vec.c
|
||||||
|
@@ -392,10 +392,8 @@ remove_maps(struct vectors * vecs)
|
||||||
|
if (!vecs)
|
||||||
|
return;
|
||||||
|
|
||||||
|
- vector_foreach_slot (vecs->mpvec, mpp, i) {
|
||||||
|
- remove_map(mpp, vecs->pathvec, vecs->mpvec);
|
||||||
|
- i--;
|
||||||
|
- }
|
||||||
|
+ vector_foreach_slot (vecs->mpvec, mpp, i)
|
||||||
|
+ remove_map(mpp, vecs->pathvec, NULL);
|
||||||
|
|
||||||
|
vector_free(vecs->mpvec);
|
||||||
|
vecs->mpvec = NULL;
|
@ -1,63 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Martin Wilck <mwilck@suse.com>
|
|
||||||
Date: Thu, 27 Oct 2022 15:25:31 +0200
|
|
||||||
Subject: [PATCH] multipath-tools: Makefile.inc: get rid of RUN
|
|
||||||
|
|
||||||
Just use $(runtimedir). Also, make the code more compact by using
|
|
||||||
the "if" function instead of a conditional.
|
|
||||||
|
|
||||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
|
||||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
---
|
|
||||||
Makefile.inc | 10 ++--------
|
|
||||||
libmultipath/defaults.h | 2 +-
|
|
||||||
2 files changed, 3 insertions(+), 9 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/Makefile.inc b/Makefile.inc
|
|
||||||
index d897ac7a..b4ec647c 100644
|
|
||||||
--- a/Makefile.inc
|
|
||||||
+++ b/Makefile.inc
|
|
||||||
@@ -34,12 +34,6 @@ else
|
|
||||||
LIB=lib
|
|
||||||
endif
|
|
||||||
|
|
||||||
-ifeq ($(shell test -L /var/run -o ! -d /var/run && echo 1),1)
|
|
||||||
- RUN=run
|
|
||||||
-else
|
|
||||||
- RUN=var/run
|
|
||||||
-endif
|
|
||||||
-
|
|
||||||
ifeq ($(shell $(PKGCONFIG) --modversion libsystemd >/dev/null 2>&1 && echo 1), 1)
|
|
||||||
SYSTEMD = $(shell $(PKGCONFIG) --modversion libsystemd | awk '{print $$1}')
|
|
||||||
else
|
|
||||||
@@ -99,7 +93,7 @@ includedir = $(usr_prefix)/include
|
|
||||||
pkgconfdir = $(usrlibdir)/pkgconfig
|
|
||||||
plugindir := $(prefix)/$(LIB)/multipath
|
|
||||||
configdir := $(prefix)/etc/multipath/conf.d
|
|
||||||
-runtimedir := /$(RUN)
|
|
||||||
+runtimedir := $(if $(shell test -L /var/run -o ! -d /var/run && echo 1),/run,/var/run)
|
|
||||||
|
|
||||||
GZIP_PROG = gzip -9 -c
|
|
||||||
RM = rm -f
|
|
||||||
@@ -143,7 +137,7 @@ WARNFLAGS := -Werror -Wall -Wextra -Wformat=2 $(WFORMATOVERFLOW) -Werror=implici
|
|
||||||
-Werror=implicit-function-declaration -Werror=format-security \
|
|
||||||
$(WNOCLOBBERED) -Werror=cast-qual $(ERROR_DISCARDED_QUALIFIERS)
|
|
||||||
CPPFLAGS := $(FORTIFY_OPT) \
|
|
||||||
- -DBIN_DIR=\"$(bindir)\" -DMULTIPATH_DIR=\"$(plugindir)\" -DRUN_DIR=\"${RUN}\" \
|
|
||||||
+ -DBIN_DIR=\"$(bindir)\" -DMULTIPATH_DIR=\"$(plugindir)\" \
|
|
||||||
-DRUNTIME_DIR=\"$(runtimedir)\" \
|
|
||||||
-DCONFIG_DIR=\"$(configdir)\" -DEXTRAVERSION=\"$(EXTRAVERSION)\" -MMD -MP
|
|
||||||
CFLAGS := --std=gnu99 $(CFLAGS) $(OPTFLAGS) $(WARNFLAGS) -pipe
|
|
||||||
diff --git a/libmultipath/defaults.h b/libmultipath/defaults.h
|
|
||||||
index 3d552b33..a5e9ea0c 100644
|
|
||||||
--- a/libmultipath/defaults.h
|
|
||||||
+++ b/libmultipath/defaults.h
|
|
||||||
@@ -62,7 +62,7 @@
|
|
||||||
|
|
||||||
#define DEV_LOSS_TMO_UNSET 0U
|
|
||||||
#define MAX_DEV_LOSS_TMO UINT_MAX
|
|
||||||
-#define DEFAULT_PIDFILE "/" RUN_DIR "/multipathd.pid"
|
|
||||||
+#define DEFAULT_PIDFILE RUNTIME_DIR "/multipathd.pid"
|
|
||||||
#define DEFAULT_SOCKET "/org/kernel/linux/storage/multipathd"
|
|
||||||
#define DEFAULT_CONFIGFILE "/etc/multipath.conf"
|
|
||||||
#define DEFAULT_BINDINGS_FILE "/etc/multipath/bindings"
|
|
@ -0,0 +1,41 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
Date: Tue, 20 Dec 2022 17:41:15 -0600
|
||||||
|
Subject: [PATCH] libmultipath: orphan paths if coalesce_paths frees newmp
|
||||||
|
|
||||||
|
If coalesce_paths() is called without a mpvec, it will free all the
|
||||||
|
multipath devices on newmp at the end. This will clear pp->mpp from the
|
||||||
|
path, but it doesn't completely unitialize them. cli_add_map() can call
|
||||||
|
coalsce_paths() this way, when adding a device that doesn't currently
|
||||||
|
exist. cli_add_map() first creates the device in the kernel, and then
|
||||||
|
calls ev_add_map() to add it to multipathd. If something goes wrong in
|
||||||
|
ev_add_map(), the paths will still be initialized, even though they're
|
||||||
|
orphans.
|
||||||
|
|
||||||
|
Fix this by calling remove_map() to orphan the paths that belong to
|
||||||
|
the multipath devices being deleted by coalesce_paths().
|
||||||
|
|
||||||
|
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
Reviewed-by: Martin Wilck <mwilck@suse.com>
|
||||||
|
---
|
||||||
|
libmultipath/configure.c | 7 +++++--
|
||||||
|
1 file changed, 5 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libmultipath/configure.c b/libmultipath/configure.c
|
||||||
|
index e551047a..e689f8a7 100644
|
||||||
|
--- a/libmultipath/configure.c
|
||||||
|
+++ b/libmultipath/configure.c
|
||||||
|
@@ -1273,8 +1273,11 @@ int coalesce_paths (struct vectors *vecs, vector mpvec, char *refwwid,
|
||||||
|
ret = CP_OK;
|
||||||
|
out:
|
||||||
|
free(size_mismatch_seen);
|
||||||
|
- if (!mpvec)
|
||||||
|
- free_multipathvec(newmp, KEEP_PATHS);
|
||||||
|
+ if (!mpvec) {
|
||||||
|
+ vector_foreach_slot (newmp, mpp, i)
|
||||||
|
+ remove_map(mpp, vecs->pathvec, NULL);
|
||||||
|
+ vector_free(newmp);
|
||||||
|
+ }
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
@ -1,38 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Martin Wilck <mwilck@suse.com>
|
|
||||||
Date: Thu, 27 Oct 2022 16:14:22 +0200
|
|
||||||
Subject: [PATCH] multipath-tools: Makefile.inc: more compact code for LIB
|
|
||||||
|
|
||||||
Use make's "if" function instead of a conditional.
|
|
||||||
|
|
||||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
|
||||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
---
|
|
||||||
Makefile.inc | 7 +------
|
|
||||||
1 file changed, 1 insertion(+), 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/Makefile.inc b/Makefile.inc
|
|
||||||
index b4ec647c..c39cec9b 100644
|
|
||||||
--- a/Makefile.inc
|
|
||||||
+++ b/Makefile.inc
|
|
||||||
@@ -28,12 +28,6 @@ ifeq ($(TOPDIR),)
|
|
||||||
TOPDIR = ..
|
|
||||||
endif
|
|
||||||
|
|
||||||
-ifeq ($(shell test -d /lib64 && echo 1),1)
|
|
||||||
- LIB=lib64
|
|
||||||
-else
|
|
||||||
- LIB=lib
|
|
||||||
-endif
|
|
||||||
-
|
|
||||||
ifeq ($(shell $(PKGCONFIG) --modversion libsystemd >/dev/null 2>&1 && echo 1), 1)
|
|
||||||
SYSTEMD = $(shell $(PKGCONFIG) --modversion libsystemd | awk '{print $$1}')
|
|
||||||
else
|
|
||||||
@@ -80,6 +74,7 @@ mpathutildir = $(TOPDIR)/libmpathutil
|
|
||||||
man8dir = $(usr_prefix)/share/man/man8
|
|
||||||
man5dir = $(usr_prefix)/share/man/man5
|
|
||||||
man3dir = $(usr_prefix)/share/man/man3
|
|
||||||
+LIB := $(if $(shell test -d /lib64 && echo 1),lib64,lib)
|
|
||||||
syslibdir = $(prefix)/$(LIB)
|
|
||||||
usrlibdir = $(usr_prefix)/$(LIB)
|
|
||||||
libdir = $(prefix)/$(LIB)/multipath
|
|
609
0007-libmultipath-is_path_valid-check-if-device-is-in-use.patch
Normal file
609
0007-libmultipath-is_path_valid-check-if-device-is-in-use.patch
Normal file
@ -0,0 +1,609 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Martin Wilck <mwilck@suse.com>
|
||||||
|
Date: Wed, 9 Nov 2022 21:20:58 +0100
|
||||||
|
Subject: [PATCH] libmultipath: is_path_valid(): check if device is in use
|
||||||
|
|
||||||
|
To check whether we will be able to add a given device can be part
|
||||||
|
of a multipath map, we have two tests in check_path_valid():
|
||||||
|
released_to_systemd() and the O_EXCL test. The former isn't helpful
|
||||||
|
if "multipath -u" is called for the first time for a given device,
|
||||||
|
and the latter is only used in the "find_multipaths smart" case, because
|
||||||
|
actively opening the device with O_EXCL, even for a very short time, is prone
|
||||||
|
to races with other processes.
|
||||||
|
|
||||||
|
It turns out that this may cause issues in some scenarios. We saw problems in
|
||||||
|
once case where "find_multipaths greedy" was used with a single
|
||||||
|
non-multipahted root disk and a very large number of multipath LUNs.
|
||||||
|
The root disk would first be classified as multipath device. multipathd
|
||||||
|
would try to create a map, fail (because the disk was mounted) and
|
||||||
|
trigger another uevent. But because of the very large number of multipath
|
||||||
|
devices, this event was queued up behind thousands of other events, and
|
||||||
|
the root device timed out eventually.
|
||||||
|
|
||||||
|
While a simple workaround for the given problem would be proper blacklisting
|
||||||
|
or using a different find_multipaths mode, I am proposing a different
|
||||||
|
solution here. An additional test is added in is_path_valid() which
|
||||||
|
checks whether the given device is currently in use by 1. sysfs holders,
|
||||||
|
2. mounts (from /proc/self/mountinfo) or 3. swaps (from /proc/swaps). 2.
|
||||||
|
and 3. are similar to systemd's device detection after switching root.
|
||||||
|
This must not only be done for the device itself, but also for all its
|
||||||
|
partitions. For mountinfo and swaps, libmount is utilized.
|
||||||
|
|
||||||
|
With this patch, "multipath -u" will make devices with mounted or otherwise
|
||||||
|
used partitions available to systemd early, without waiting for multipathd
|
||||||
|
to fail setting up the map and re-triggering an uevent. This should avoid
|
||||||
|
the issue described above even without blacklisting. The downside of it
|
||||||
|
is a longer runtime of "multipath -u" for almost all devices, in particular
|
||||||
|
for real multipath devices. The runtime required for the new checks was in the
|
||||||
|
order of 0.1ms-1ms in my tests. Moreover, there is a certain risk that devices may
|
||||||
|
wrongly classified as non-multipath because of transient mounts or holders
|
||||||
|
created by other processes.
|
||||||
|
|
||||||
|
To make this code compile on older distributions, we need some additional
|
||||||
|
checks in create-config.mk.
|
||||||
|
|
||||||
|
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
||||||
|
Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
---
|
||||||
|
.github/workflows/build-and-unittest.yaml | 2 +-
|
||||||
|
create-config.mk | 11 +-
|
||||||
|
libmpathutil/libmpathutil.version | 6 +
|
||||||
|
libmpathutil/util.c | 12 +
|
||||||
|
libmpathutil/util.h | 2 +
|
||||||
|
libmultipath/Makefile | 2 +-
|
||||||
|
libmultipath/alias.c | 11 -
|
||||||
|
libmultipath/valid.c | 270 ++++++++++++++++++++++
|
||||||
|
tests/Makefile | 2 +-
|
||||||
|
tests/valid.c | 48 ++++
|
||||||
|
10 files changed, 351 insertions(+), 15 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/.github/workflows/build-and-unittest.yaml b/.github/workflows/build-and-unittest.yaml
|
||||||
|
index abf17bf0..9e6c0e89 100644
|
||||||
|
--- a/.github/workflows/build-and-unittest.yaml
|
||||||
|
+++ b/.github/workflows/build-and-unittest.yaml
|
||||||
|
@@ -31,7 +31,7 @@ jobs:
|
||||||
|
sudo apt-get install --yes gcc
|
||||||
|
make perl-base pkg-config valgrind
|
||||||
|
libdevmapper-dev libreadline-dev libaio-dev libsystemd-dev
|
||||||
|
- libudev-dev libjson-c-dev liburcu-dev libcmocka-dev libedit-dev
|
||||||
|
+ libudev-dev libjson-c-dev liburcu-dev libcmocka-dev libedit-dev libmount-dev
|
||||||
|
- name: build
|
||||||
|
run: make -Orecurse -j$(grep -c ^processor /proc/cpuinfo) READLINE=${{ matrix.rl }}
|
||||||
|
- name: test
|
||||||
|
diff --git a/create-config.mk b/create-config.mk
|
||||||
|
index 2a95ec56..f128375f 100644
|
||||||
|
--- a/create-config.mk
|
||||||
|
+++ b/create-config.mk
|
||||||
|
@@ -23,7 +23,7 @@ check_cmd = $(shell \
|
||||||
|
|
||||||
|
# Check whether a function with name $1 has been declared in header file $2.
|
||||||
|
check_func = $(shell \
|
||||||
|
- if grep -Eq "^[^[:blank:]]+[[:blank:]]+$1[[:blank:]]*(.*)*" "$2"; then \
|
||||||
|
+ if grep -Eq "^(extern[[:blank:]]+)?[^[:blank:]]+[[:blank:]]+$1[[:blank:]]*(.*)*" "$2"; then \
|
||||||
|
found=1; \
|
||||||
|
status="yes"; \
|
||||||
|
else \
|
||||||
|
@@ -104,6 +104,15 @@ ifneq ($(call check_var,ELS_DTAG_LNK_INTEGRITY,$(kernel_incdir)/scsi/fc/fc_els.h
|
||||||
|
FPIN_SUPPORT = 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
+libmount_h := $(shell $(PKGCONFIG) --variable=includedir mount)/libmount/libmount.h
|
||||||
|
+ifneq ($(call check_func,mnt_unref_cache,$(libmount_h)),0)
|
||||||
|
+ DEFINES += LIBMOUNT_HAS_MNT_UNREF_CACHE
|
||||||
|
+endif
|
||||||
|
+
|
||||||
|
+ifneq ($(call check_func,mnt_table_parse_swaps,$(libmount_h)),0)
|
||||||
|
+ DEFINES += LIBMOUNT_SUPPORTS_SWAP
|
||||||
|
+endif
|
||||||
|
+
|
||||||
|
ifneq ($(call check_file,$(kernel_incdir)/linux/nvme_ioctl.h),0)
|
||||||
|
ANA_SUPPORT := 1
|
||||||
|
endif
|
||||||
|
diff --git a/libmpathutil/libmpathutil.version b/libmpathutil/libmpathutil.version
|
||||||
|
index 1238fc93..dd007be4 100644
|
||||||
|
--- a/libmpathutil/libmpathutil.version
|
||||||
|
+++ b/libmpathutil/libmpathutil.version
|
||||||
|
@@ -133,3 +133,9 @@ LIBMPATHUTIL_1.1 {
|
||||||
|
global:
|
||||||
|
cleanup_fd_ptr;
|
||||||
|
} LIBMPATHUTIL_1.0;
|
||||||
|
+
|
||||||
|
+LIBMPATHUTIL_1.2 {
|
||||||
|
+global:
|
||||||
|
+ cleanup_vector_free;
|
||||||
|
+ cleanup_fclose;
|
||||||
|
+} LIBMPATHUTIL_1.0;
|
||||||
|
diff --git a/libmpathutil/util.c b/libmpathutil/util.c
|
||||||
|
index 9662e1ed..92f25a50 100644
|
||||||
|
--- a/libmpathutil/util.c
|
||||||
|
+++ b/libmpathutil/util.c
|
||||||
|
@@ -386,6 +386,18 @@ void cleanup_mutex(void *arg)
|
||||||
|
pthread_mutex_unlock(arg);
|
||||||
|
}
|
||||||
|
|
||||||
|
+void cleanup_vector_free(void *arg)
|
||||||
|
+{
|
||||||
|
+ if (arg)
|
||||||
|
+ vector_free((vector)arg);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+void cleanup_fclose(void *p)
|
||||||
|
+{
|
||||||
|
+ if (p)
|
||||||
|
+ fclose(p);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
struct bitfield *alloc_bitfield(unsigned int maxbit)
|
||||||
|
{
|
||||||
|
unsigned int n;
|
||||||
|
diff --git a/libmpathutil/util.h b/libmpathutil/util.h
|
||||||
|
index 75e20fd8..99a471d0 100644
|
||||||
|
--- a/libmpathutil/util.h
|
||||||
|
+++ b/libmpathutil/util.h
|
||||||
|
@@ -48,6 +48,8 @@ int should_exit(void);
|
||||||
|
void cleanup_fd_ptr(void *arg);
|
||||||
|
void cleanup_free_ptr(void *arg);
|
||||||
|
void cleanup_mutex(void *arg);
|
||||||
|
+void cleanup_vector_free(void *arg);
|
||||||
|
+void cleanup_fclose(void *p);
|
||||||
|
|
||||||
|
struct scandir_result {
|
||||||
|
struct dirent **di;
|
||||||
|
diff --git a/libmultipath/Makefile b/libmultipath/Makefile
|
||||||
|
index 3df851e2..61aa611f 100644
|
||||||
|
--- a/libmultipath/Makefile
|
||||||
|
+++ b/libmultipath/Makefile
|
||||||
|
@@ -7,7 +7,7 @@ DEVLIB := libmultipath.so
|
||||||
|
CPPFLAGS += -I$(mpathutildir) -I$(mpathcmddir) -I$(nvmedir) -D_GNU_SOURCE $(SYSTEMD_CPPFLAGS)
|
||||||
|
CFLAGS += $(LIB_CFLAGS)
|
||||||
|
LIBDEPS += -lpthread -ldl -ldevmapper -ludev -L$(mpathutildir) -lmpathutil -L$(mpathcmddir) -lmpathcmd \
|
||||||
|
- -lurcu -laio $(SYSTEMD_LIBDEPS)
|
||||||
|
+ -lmount -lurcu -laio $(SYSTEMD_LIBDEPS)
|
||||||
|
|
||||||
|
# object files referencing MULTIPATH_DIR or CONFIG_DIR
|
||||||
|
# they need to be recompiled for unit tests
|
||||||
|
diff --git a/libmultipath/alias.c b/libmultipath/alias.c
|
||||||
|
index 05201224..c0139a2e 100644
|
||||||
|
--- a/libmultipath/alias.c
|
||||||
|
+++ b/libmultipath/alias.c
|
||||||
|
@@ -667,11 +667,6 @@ static int _check_bindings_file(const struct config *conf, FILE *file,
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static void cleanup_fclose(void *p)
|
||||||
|
-{
|
||||||
|
- fclose(p);
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
static int alias_compar(const void *p1, const void *p2)
|
||||||
|
{
|
||||||
|
const char *alias1 = (*(struct mpentry * const *)p1)->alias;
|
||||||
|
@@ -684,12 +679,6 @@ static int alias_compar(const void *p1, const void *p2)
|
||||||
|
return alias1 ? -1 : alias2 ? 1 : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static void cleanup_vector_free(void *arg)
|
||||||
|
-{
|
||||||
|
- if (arg)
|
||||||
|
- vector_free((vector)arg);
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
/*
|
||||||
|
* check_alias_settings(): test for inconsistent alias configuration
|
||||||
|
*
|
||||||
|
diff --git a/libmultipath/valid.c b/libmultipath/valid.c
|
||||||
|
index a6aa9215..d4dae3ed 100644
|
||||||
|
--- a/libmultipath/valid.c
|
||||||
|
+++ b/libmultipath/valid.c
|
||||||
|
@@ -17,6 +17,8 @@
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <libudev.h>
|
||||||
|
+#include <dirent.h>
|
||||||
|
+#include <libmount/libmount.h>
|
||||||
|
|
||||||
|
#include "vector.h"
|
||||||
|
#include "config.h"
|
||||||
|
@@ -30,12 +32,271 @@
|
||||||
|
#include "mpath_cmd.h"
|
||||||
|
#include "valid.h"
|
||||||
|
|
||||||
|
+static int subdir_filter(const struct dirent *ent)
|
||||||
|
+{
|
||||||
|
+ unsigned int j;
|
||||||
|
+ static char const *const skip[] = {
|
||||||
|
+ ".",
|
||||||
|
+ "..",
|
||||||
|
+ "holders",
|
||||||
|
+ "integrity",
|
||||||
|
+ "mq",
|
||||||
|
+ "power",
|
||||||
|
+ "queue",
|
||||||
|
+ "slaves",
|
||||||
|
+ "trace",
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ if (ent->d_type != DT_DIR)
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ for (j = 0; j < ARRAY_SIZE(skip); j++)
|
||||||
|
+ if (!strcmp(skip[j], ent->d_name))
|
||||||
|
+ return 0;
|
||||||
|
+ return 1;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int read_partitions(const char *syspath, vector parts)
|
||||||
|
+{
|
||||||
|
+ struct scandir_result sr = { .n = 0 };
|
||||||
|
+ char path[PATH_MAX], *last;
|
||||||
|
+ char *prop;
|
||||||
|
+ int i;
|
||||||
|
+
|
||||||
|
+ strlcpy(path, syspath, sizeof(path));
|
||||||
|
+ sr.n = scandir(path, &sr.di, subdir_filter, NULL);
|
||||||
|
+ if (sr.n == -1)
|
||||||
|
+ return -errno;
|
||||||
|
+
|
||||||
|
+ pthread_cleanup_push_cast(free_scandir_result, &sr);
|
||||||
|
+
|
||||||
|
+ /* parts[0] is the whole disk */
|
||||||
|
+ if ((prop = strdup(strrchr(path, '/') + 1)) != NULL) {
|
||||||
|
+ if (vector_alloc_slot(parts))
|
||||||
|
+ vector_set_slot(parts, prop);
|
||||||
|
+ else
|
||||||
|
+ free(prop);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ last = path + strlen(path);
|
||||||
|
+ for (i = 0; i < sr.n; i++) {
|
||||||
|
+ struct stat st;
|
||||||
|
+
|
||||||
|
+ /* only add dirs that have the "partition" attribute */
|
||||||
|
+ snprintf(last, sizeof(path) - (last - path), "/%s/partition",
|
||||||
|
+ sr.di[i]->d_name);
|
||||||
|
+
|
||||||
|
+ if (stat(path, &st) == 0 &&
|
||||||
|
+ (prop = strdup(sr.di[i]->d_name)) != NULL) {
|
||||||
|
+ if (vector_alloc_slot(parts))
|
||||||
|
+ vector_set_slot(parts, prop);
|
||||||
|
+ else
|
||||||
|
+ free(prop);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ pthread_cleanup_pop(1);
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int no_dots(const struct dirent *ent)
|
||||||
|
+{
|
||||||
|
+ const char *name = ent->d_name;
|
||||||
|
+
|
||||||
|
+ if (name[0] == '.' &&
|
||||||
|
+ (name[1] == '\0' || (name[1] == '.' && name[2] == '\0')))
|
||||||
|
+ return 0;
|
||||||
|
+ return 1;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int check_holders(const char *syspath)
|
||||||
|
+{
|
||||||
|
+ struct scandir_result __attribute__((cleanup(free_scandir_result)))
|
||||||
|
+ sr = { .n = 0 };
|
||||||
|
+
|
||||||
|
+ sr.n = scandir(syspath, &sr.di, no_dots, NULL);
|
||||||
|
+ if (sr.n > 0)
|
||||||
|
+ condlog(4, "%s: found holders under %s", __func__, syspath);
|
||||||
|
+ return sr.n;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int check_all_holders(const struct _vector *parts)
|
||||||
|
+{
|
||||||
|
+ char syspath[PATH_MAX];
|
||||||
|
+ const char *sysname;
|
||||||
|
+ unsigned int j;
|
||||||
|
+
|
||||||
|
+ if (VECTOR_SIZE(parts) == 0)
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ if (safe_sprintf(syspath, "/sys/class/block/%s/holders",
|
||||||
|
+ (const char *)VECTOR_SLOT(parts, 0)))
|
||||||
|
+ return -EOVERFLOW;
|
||||||
|
+
|
||||||
|
+ if (check_holders(syspath) > 0)
|
||||||
|
+ return 1;
|
||||||
|
+
|
||||||
|
+ j = 1;
|
||||||
|
+ vector_foreach_slot_after(parts, sysname, j) {
|
||||||
|
+ if (safe_sprintf(syspath, "/sys/class/block/%s/%s/holders",
|
||||||
|
+ (const char *)VECTOR_SLOT(parts, 0), sysname))
|
||||||
|
+ return -EOVERFLOW;
|
||||||
|
+ if (check_holders(syspath) > 0)
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void cleanup_table(void *arg)
|
||||||
|
+{
|
||||||
|
+ if (arg)
|
||||||
|
+ mnt_free_table((struct libmnt_table *)arg);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void cleanup_cache(void *arg)
|
||||||
|
+{
|
||||||
|
+ if (arg)
|
||||||
|
+#ifdef LIBMOUNT_HAS_MNT_UNREF_CACHE
|
||||||
|
+ mnt_unref_cache((struct libmnt_cache *)arg);
|
||||||
|
+#else
|
||||||
|
+ mnt_free_cache((struct libmnt_cache *)arg);
|
||||||
|
+#endif
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * Passed a vector of partitions and a libmount table,
|
||||||
|
+ * check if any of the partitions in the vector is referenced in the table.
|
||||||
|
+ * Note that mnt_table_find_srcpath() also resolves mounts by symlinks.
|
||||||
|
+ */
|
||||||
|
+static int check_mnt_table(const struct _vector *parts,
|
||||||
|
+ struct libmnt_table *tbl,
|
||||||
|
+ const char *table_name)
|
||||||
|
+{
|
||||||
|
+ unsigned int i;
|
||||||
|
+ const char *sysname;
|
||||||
|
+ char devpath[PATH_MAX];
|
||||||
|
+
|
||||||
|
+ vector_foreach_slot(parts, sysname, i) {
|
||||||
|
+ if (!safe_sprintf(devpath, "/dev/%s", sysname) &&
|
||||||
|
+ mnt_table_find_srcpath(tbl, devpath,
|
||||||
|
+ MNT_ITER_FORWARD) != NULL) {
|
||||||
|
+ condlog(4, "%s: found %s in %s", __func__,
|
||||||
|
+ sysname, table_name);
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int check_mountinfo(const struct _vector *parts)
|
||||||
|
+{
|
||||||
|
+ static const char mountinfo[] = "/proc/self/mountinfo";
|
||||||
|
+ struct libmnt_table *tbl;
|
||||||
|
+ struct libmnt_cache *cache;
|
||||||
|
+ FILE *stream;
|
||||||
|
+ int used = 0, ret;
|
||||||
|
+
|
||||||
|
+ tbl = mnt_new_table();
|
||||||
|
+ if (!tbl )
|
||||||
|
+ return -errno;
|
||||||
|
+
|
||||||
|
+ pthread_cleanup_push(cleanup_table, tbl);
|
||||||
|
+ cache = mnt_new_cache();
|
||||||
|
+ if (cache) {
|
||||||
|
+ pthread_cleanup_push(cleanup_cache, cache);
|
||||||
|
+ if (mnt_table_set_cache(tbl, cache) == 0) {
|
||||||
|
+ stream = fopen(mountinfo, "r");
|
||||||
|
+ if (stream != NULL) {
|
||||||
|
+ pthread_cleanup_push(cleanup_fclose, stream);
|
||||||
|
+ ret = mnt_table_parse_stream(tbl, stream, mountinfo);
|
||||||
|
+ pthread_cleanup_pop(1);
|
||||||
|
+
|
||||||
|
+ if (ret == 0)
|
||||||
|
+ used = check_mnt_table(parts, tbl,
|
||||||
|
+ "mountinfo");
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ pthread_cleanup_pop(1);
|
||||||
|
+ }
|
||||||
|
+ pthread_cleanup_pop(1);
|
||||||
|
+ return used;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+#ifdef LIBMOUNT_SUPPORTS_SWAP
|
||||||
|
+static int check_swaps(const struct _vector *parts)
|
||||||
|
+{
|
||||||
|
+ struct libmnt_table *tbl;
|
||||||
|
+ struct libmnt_cache *cache;
|
||||||
|
+ int used = 0, ret;
|
||||||
|
+
|
||||||
|
+ tbl = mnt_new_table();
|
||||||
|
+ if (!tbl )
|
||||||
|
+ return -errno;
|
||||||
|
+
|
||||||
|
+ pthread_cleanup_push(cleanup_table, tbl);
|
||||||
|
+ cache = mnt_new_cache();
|
||||||
|
+ if (cache) {
|
||||||
|
+ pthread_cleanup_push(cleanup_cache, cache);
|
||||||
|
+ if (mnt_table_set_cache(tbl, cache) == 0) {
|
||||||
|
+ ret = mnt_table_parse_swaps(tbl, NULL);
|
||||||
|
+ if (ret == 0)
|
||||||
|
+ used = check_mnt_table(parts, tbl, "swaps");
|
||||||
|
+ }
|
||||||
|
+ pthread_cleanup_pop(1);
|
||||||
|
+ }
|
||||||
|
+ pthread_cleanup_pop(1);
|
||||||
|
+ return used;
|
||||||
|
+}
|
||||||
|
+#else
|
||||||
|
+static int check_swaps(const struct _vector *parts __attribute__((unused)))
|
||||||
|
+{
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * Given a block device, check if the device itself or any of its
|
||||||
|
+ * partitions is in use
|
||||||
|
+ * - by sysfs holders (e.g. LVM)
|
||||||
|
+ * - mounted according to /proc/self/mountinfo
|
||||||
|
+ * - used as swap
|
||||||
|
+ */
|
||||||
|
+static int is_device_in_use(struct udev_device *udevice)
|
||||||
|
+{
|
||||||
|
+ const char *syspath;
|
||||||
|
+ vector parts;
|
||||||
|
+ int used = 0, ret;
|
||||||
|
+
|
||||||
|
+ syspath = udev_device_get_syspath(udevice);
|
||||||
|
+ if (!syspath)
|
||||||
|
+ return -ENOMEM;
|
||||||
|
+
|
||||||
|
+ parts = vector_alloc();
|
||||||
|
+ if (!parts)
|
||||||
|
+ return -ENOMEM;
|
||||||
|
+
|
||||||
|
+ pthread_cleanup_push_cast(free_strvec, parts);
|
||||||
|
+ if ((ret = read_partitions(syspath, parts)) == 0)
|
||||||
|
+ used = check_all_holders(parts) > 0 ||
|
||||||
|
+ check_mountinfo(parts) > 0 ||
|
||||||
|
+ check_swaps(parts) > 0;
|
||||||
|
+ pthread_cleanup_pop(1);
|
||||||
|
+
|
||||||
|
+ if (ret < 0)
|
||||||
|
+ return ret;
|
||||||
|
+
|
||||||
|
+ condlog(3, "%s: %s is %sin use", __func__, syspath, used ? "" : "not ");
|
||||||
|
+ return used;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
int
|
||||||
|
is_path_valid(const char *name, struct config *conf, struct path *pp,
|
||||||
|
bool check_multipathd)
|
||||||
|
{
|
||||||
|
int r;
|
||||||
|
int fd;
|
||||||
|
+ const char *prop;
|
||||||
|
|
||||||
|
if (!pp || !name || !conf)
|
||||||
|
return PATH_IS_ERROR;
|
||||||
|
@@ -80,6 +341,10 @@ is_path_valid(const char *name, struct config *conf, struct path *pp,
|
||||||
|
if (!pp->udev)
|
||||||
|
return PATH_IS_ERROR;
|
||||||
|
|
||||||
|
+ prop = udev_device_get_property_value(pp->udev, "DEVTYPE");
|
||||||
|
+ if (prop == NULL || strcmp(prop, "disk"))
|
||||||
|
+ return PATH_IS_NOT_VALID;
|
||||||
|
+
|
||||||
|
r = pathinfo(pp, conf, DI_SYSFS | DI_WWID | DI_BLACKLIST);
|
||||||
|
if (r == PATHINFO_SKIPPED)
|
||||||
|
return PATH_IS_NOT_VALID;
|
||||||
|
@@ -96,6 +361,11 @@ is_path_valid(const char *name, struct config *conf, struct path *pp,
|
||||||
|
return PATH_IS_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if ((conf->find_multipaths == FIND_MULTIPATHS_GREEDY ||
|
||||||
|
+ conf->find_multipaths == FIND_MULTIPATHS_SMART) &&
|
||||||
|
+ is_device_in_use(pp->udev) > 0)
|
||||||
|
+ return PATH_IS_NOT_VALID;
|
||||||
|
+
|
||||||
|
if (conf->find_multipaths == FIND_MULTIPATHS_GREEDY)
|
||||||
|
return PATH_IS_VALID;
|
||||||
|
|
||||||
|
diff --git a/tests/Makefile b/tests/Makefile
|
||||||
|
index 860338b2..1648ab9d 100644
|
||||||
|
--- a/tests/Makefile
|
||||||
|
+++ b/tests/Makefile
|
||||||
|
@@ -55,7 +55,7 @@ vpd-test_LIBDEPS := -ludev -lpthread -ldl
|
||||||
|
alias-test_TESTDEPS := test-log.o
|
||||||
|
alias-test_LIBDEPS := -lpthread -ldl
|
||||||
|
valid-test_OBJDEPS := $(multipathdir)/valid.o $(multipathdir)/discovery.o
|
||||||
|
-valid-test_LIBDEPS := -ludev -lpthread -ldl
|
||||||
|
+valid-test_LIBDEPS := -lmount -ludev -lpthread -ldl
|
||||||
|
devt-test_LIBDEPS := -ludev
|
||||||
|
mpathvalid-test_LIBDEPS := -ludev -lpthread -ldl
|
||||||
|
mpathvalid-test_OBJDEPS := $(mpathvaliddir)/mpath_valid.o
|
||||||
|
diff --git a/tests/valid.c b/tests/valid.c
|
||||||
|
index 398b771e..70329324 100644
|
||||||
|
--- a/tests/valid.c
|
||||||
|
+++ b/tests/valid.c
|
||||||
|
@@ -83,6 +83,13 @@ struct udev_device *__wrap_udev_device_new_from_subsystem_sysname(struct udev *u
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
+/* For devtype check */
|
||||||
|
+const char *__wrap_udev_device_get_property_value(struct udev_device *udev_device, const char *property)
|
||||||
|
+{
|
||||||
|
+ check_expected(property);
|
||||||
|
+ return mock_ptr_type(char *);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
/* For the "hidden" check in pathinfo() */
|
||||||
|
const char *__wrap_udev_device_get_sysattr_value(struct udev_device *udev_device,
|
||||||
|
const char *sysattr)
|
||||||
|
@@ -97,6 +104,12 @@ int __wrap_add_foreign(struct udev_device *udev_device)
|
||||||
|
return mock_type(int);
|
||||||
|
}
|
||||||
|
|
||||||
|
+/* For is_device_used() */
|
||||||
|
+const char *__wrap_udev_device_get_sysname(struct udev_device *udev_device)
|
||||||
|
+{
|
||||||
|
+ return mock_ptr_type(char *);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
/* called from pathinfo() */
|
||||||
|
int __wrap_filter_devnode(struct config *conf, const struct _vector *elist,
|
||||||
|
const char *vendor, const char * product, const char *dev)
|
||||||
|
@@ -165,6 +178,11 @@ int __wrap_is_failed_wwid(const char *wwid)
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
+const char *__wrap_udev_device_get_syspath(struct udev_device *udevice)
|
||||||
|
+{
|
||||||
|
+ return mock_ptr_type(char *);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
int __wrap_check_wwids_file(char *wwid, int write_wwid)
|
||||||
|
{
|
||||||
|
bool passed = mock_type(bool);
|
||||||
|
@@ -225,6 +243,8 @@ static void setup_passing(char *name, char *wwid, unsigned int check_multipathd,
|
||||||
|
will_return(__wrap_udev_device_new_from_subsystem_sysname, true);
|
||||||
|
will_return(__wrap_udev_device_new_from_subsystem_sysname,
|
||||||
|
name);
|
||||||
|
+ expect_string(__wrap_udev_device_get_property_value, property, "DEVTYPE");
|
||||||
|
+ will_return(__wrap_udev_device_get_property_value, "disk");
|
||||||
|
if (stage == STAGE_GET_UDEV_DEVICE)
|
||||||
|
return;
|
||||||
|
if (stage == STAGE_PATHINFO_REAL) {
|
||||||
|
@@ -250,6 +270,10 @@ static void setup_passing(char *name, char *wwid, unsigned int check_multipathd,
|
||||||
|
return;
|
||||||
|
will_return(__wrap_is_failed_wwid, WWID_IS_NOT_FAILED);
|
||||||
|
will_return(__wrap_is_failed_wwid, wwid);
|
||||||
|
+ /* avoid real is_device_in_use() check */
|
||||||
|
+ if (conf.find_multipaths == FIND_MULTIPATHS_GREEDY ||
|
||||||
|
+ conf.find_multipaths == FIND_MULTIPATHS_SMART)
|
||||||
|
+ will_return(__wrap_udev_device_get_syspath, NULL);
|
||||||
|
if (stage == STAGE_IS_FAILED)
|
||||||
|
return;
|
||||||
|
will_return(__wrap_check_wwids_file, false);
|
||||||
|
@@ -347,6 +371,30 @@ static void test_check_multipathd(void **state)
|
||||||
|
assert_int_equal(is_path_valid(name, &conf, &pp, true),
|
||||||
|
PATH_IS_ERROR);
|
||||||
|
assert_string_equal(pp.dev, name);
|
||||||
|
+
|
||||||
|
+ /* test pass because connect succeeded. succeed getting udev. Wrong DEVTYPE */
|
||||||
|
+ memset(&pp, 0, sizeof(pp));
|
||||||
|
+ setup_passing(name, NULL, CHECK_MPATHD_RUNNING, STAGE_CHECK_MULTIPATHD);
|
||||||
|
+ will_return(__wrap_udev_device_new_from_subsystem_sysname, true);
|
||||||
|
+ will_return(__wrap_udev_device_new_from_subsystem_sysname,
|
||||||
|
+ name);
|
||||||
|
+ expect_string(__wrap_udev_device_get_property_value, property, "DEVTYPE");
|
||||||
|
+ will_return(__wrap_udev_device_get_property_value, "partition");
|
||||||
|
+ assert_int_equal(is_path_valid(name, &conf, &pp, true),
|
||||||
|
+ PATH_IS_NOT_VALID);
|
||||||
|
+ assert_string_equal(pp.dev, name);
|
||||||
|
+
|
||||||
|
+ /* test pass because connect succeeded. succeed getting udev. Bad DEVTYPE */
|
||||||
|
+ memset(&pp, 0, sizeof(pp));
|
||||||
|
+ setup_passing(name, NULL, CHECK_MPATHD_RUNNING, STAGE_CHECK_MULTIPATHD);
|
||||||
|
+ will_return(__wrap_udev_device_new_from_subsystem_sysname, true);
|
||||||
|
+ will_return(__wrap_udev_device_new_from_subsystem_sysname,
|
||||||
|
+ name);
|
||||||
|
+ expect_string(__wrap_udev_device_get_property_value, property, "DEVTYPE");
|
||||||
|
+ will_return(__wrap_udev_device_get_property_value, NULL);
|
||||||
|
+ assert_int_equal(is_path_valid(name, &conf, &pp, true),
|
||||||
|
+ PATH_IS_NOT_VALID);
|
||||||
|
+ assert_string_equal(pp.dev, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void test_pathinfo(void **state)
|
@ -1,139 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Martin Wilck <mwilck@suse.com>
|
|
||||||
Date: Thu, 27 Oct 2022 16:17:40 +0200
|
|
||||||
Subject: [PATCH] multipath-tools: Makefiles: simplify code for include dirs
|
|
||||||
|
|
||||||
Use make's if function, and use lower-case latters for make variable
|
|
||||||
names that represent directories, such as elsewhere.
|
|
||||||
|
|
||||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
|
||||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
---
|
|
||||||
Makefile.inc | 16 +++-------------
|
|
||||||
kpartx/Makefile | 2 +-
|
|
||||||
libmultipath/Makefile | 14 +++++++-------
|
|
||||||
libmultipath/prioritizers/Makefile | 2 +-
|
|
||||||
multipathd/Makefile | 4 ++--
|
|
||||||
5 files changed, 14 insertions(+), 24 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/Makefile.inc b/Makefile.inc
|
|
||||||
index c39cec9b..38bd1d80 100644
|
|
||||||
--- a/Makefile.inc
|
|
||||||
+++ b/Makefile.inc
|
|
||||||
@@ -37,20 +37,7 @@ else
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
-ifeq ($(shell $(PKGCONFIG) --modversion devmapper >/dev/null 2>&1 && echo 1), 1)
|
|
||||||
- DEVMAPPER_INCDIR = $(shell $(PKGCONFIG) --variable=includedir devmapper)
|
|
||||||
-else
|
|
||||||
- DEVMAPPER_INCDIR = /usr/include
|
|
||||||
-endif
|
|
||||||
-
|
|
||||||
-ifeq ($(shell $(PKGCONFIG) --modversion libudev >/dev/null 2>&1 && echo 1), 1)
|
|
||||||
- LIBUDEV_INCDIR = $(shell $(PKGCONFIG) --variable=includedir libudev)
|
|
||||||
-else
|
|
||||||
- LIBUDEV_INCDIR = /usr/include
|
|
||||||
-endif
|
|
||||||
-
|
|
||||||
# Allow user to override default location.
|
|
||||||
-LINUX_HEADERS_INCDIR = /usr/include
|
|
||||||
|
|
||||||
# Paths. All these can be overridden on the "make" command line.
|
|
||||||
prefix =
|
|
||||||
@@ -89,6 +76,9 @@ pkgconfdir = $(usrlibdir)/pkgconfig
|
|
||||||
plugindir := $(prefix)/$(LIB)/multipath
|
|
||||||
configdir := $(prefix)/etc/multipath/conf.d
|
|
||||||
runtimedir := $(if $(shell test -L /var/run -o ! -d /var/run && echo 1),/run,/var/run)
|
|
||||||
+devmapper_incdir := $(or $(shell $(PKGCONFIG) --variable=includedir devmapper),/usr/include)
|
|
||||||
+libudev_incdir := $(or $(shell $(PKGCONFIG) --variable=includedir libudev),/usr/include)
|
|
||||||
+kernel_incdir := /usr/include
|
|
||||||
|
|
||||||
GZIP_PROG = gzip -9 -c
|
|
||||||
RM = rm -f
|
|
||||||
diff --git a/kpartx/Makefile b/kpartx/Makefile
|
|
||||||
index 742d3bcd..bdf2d035 100644
|
|
||||||
--- a/kpartx/Makefile
|
|
||||||
+++ b/kpartx/Makefile
|
|
||||||
@@ -9,7 +9,7 @@ LDFLAGS += $(BIN_LDFLAGS)
|
|
||||||
|
|
||||||
LIBDEPS += -ldevmapper
|
|
||||||
|
|
||||||
-ifneq ($(call check_func,dm_task_set_cookie,$(DEVMAPPER_INCDIR)/libdevmapper.h),0)
|
|
||||||
+ifneq ($(call check_func,dm_task_set_cookie,$(devmapper_incdir)/libdevmapper.h),0)
|
|
||||||
CPPFLAGS += -DLIBDM_API_COOKIE
|
|
||||||
endif
|
|
||||||
|
|
||||||
diff --git a/libmultipath/Makefile b/libmultipath/Makefile
|
|
||||||
index 3b60a525..f0df27c0 100644
|
|
||||||
--- a/libmultipath/Makefile
|
|
||||||
+++ b/libmultipath/Makefile
|
|
||||||
@@ -22,31 +22,31 @@ ifdef SYSTEMD
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
-ifneq ($(call check_func,dm_task_no_flush,$(DEVMAPPER_INCDIR)/libdevmapper.h),0)
|
|
||||||
+ifneq ($(call check_func,dm_task_no_flush,$(devmapper_incdir)/libdevmapper.h),0)
|
|
||||||
CPPFLAGS += -DLIBDM_API_FLUSH
|
|
||||||
endif
|
|
||||||
|
|
||||||
-ifneq ($(call check_func,dm_task_get_errno,$(DEVMAPPER_INCDIR)/libdevmapper.h),0)
|
|
||||||
+ifneq ($(call check_func,dm_task_get_errno,$(devmapper_incdir)/libdevmapper.h),0)
|
|
||||||
CPPFLAGS += -DLIBDM_API_GET_ERRNO
|
|
||||||
endif
|
|
||||||
|
|
||||||
-ifneq ($(call check_func,dm_task_set_cookie,$(DEVMAPPER_INCDIR)/libdevmapper.h),0)
|
|
||||||
+ifneq ($(call check_func,dm_task_set_cookie,$(devmapper_incdir)/libdevmapper.h),0)
|
|
||||||
CPPFLAGS += -DLIBDM_API_COOKIE
|
|
||||||
endif
|
|
||||||
|
|
||||||
-ifneq ($(call check_func,udev_monitor_set_receive_buffer_size,$(LIBUDEV_INCDIR)/libudev.h),0)
|
|
||||||
+ifneq ($(call check_func,udev_monitor_set_receive_buffer_size,$(libudev_incdir)/libudev.h),0)
|
|
||||||
CPPFLAGS += -DLIBUDEV_API_RECVBUF
|
|
||||||
endif
|
|
||||||
|
|
||||||
-ifneq ($(call check_func,dm_task_deferred_remove,$(DEVMAPPER_INCDIR)/libdevmapper.h),0)
|
|
||||||
+ifneq ($(call check_func,dm_task_deferred_remove,$(devmapper_incdir)/libdevmapper.h),0)
|
|
||||||
CPPFLAGS += -DLIBDM_API_DEFERRED
|
|
||||||
endif
|
|
||||||
|
|
||||||
-ifneq ($(call check_func,dm_hold_control_dev,$(DEVMAPPER_INCDIR)/libdevmapper.h),0)
|
|
||||||
+ifneq ($(call check_func,dm_hold_control_dev,$(devmapper_incdir)/libdevmapper.h),0)
|
|
||||||
CPPFLAGS += -DLIBDM_API_HOLD_CONTROL
|
|
||||||
endif
|
|
||||||
|
|
||||||
-ifneq ($(call check_var,ELS_DTAG_LNK_INTEGRITY,$(LINUX_HEADERS_INCDIR)/scsi/fc/fc_els.h),0)
|
|
||||||
+ifneq ($(call check_var,ELS_DTAG_LNK_INTEGRITY,$(kernel_incdir)/scsi/fc/fc_els.h),0)
|
|
||||||
CPPFLAGS += -DFPIN_EVENT_HANDLER
|
|
||||||
endif
|
|
||||||
|
|
||||||
diff --git a/libmultipath/prioritizers/Makefile b/libmultipath/prioritizers/Makefile
|
|
||||||
index 400f7735..97155f51 100644
|
|
||||||
--- a/libmultipath/prioritizers/Makefile
|
|
||||||
+++ b/libmultipath/prioritizers/Makefile
|
|
||||||
@@ -26,7 +26,7 @@ LIBS = \
|
|
||||||
libpriopath_latency.so \
|
|
||||||
libpriosysfs.so
|
|
||||||
|
|
||||||
-ifneq ($(call check_file,$(LINUX_HEADERS_INCDIR)/linux/nvme_ioctl.h),0)
|
|
||||||
+ifneq ($(call check_file,$(kernel_incdir)/linux/nvme_ioctl.h),0)
|
|
||||||
LIBS += libprioana.so
|
|
||||||
CPPFLAGS += -I../nvme
|
|
||||||
endif
|
|
||||||
diff --git a/multipathd/Makefile b/multipathd/Makefile
|
|
||||||
index 3ce9465e..c462d7b1 100644
|
|
||||||
--- a/multipathd/Makefile
|
|
||||||
+++ b/multipathd/Makefile
|
|
||||||
@@ -1,10 +1,10 @@
|
|
||||||
include ../Makefile.inc
|
|
||||||
|
|
||||||
-ifneq ($(call check_func,dm_task_get_errno,$(DEVMAPPER_INCDIR)/libdevmapper.h),0)
|
|
||||||
+ifneq ($(call check_func,dm_task_get_errno,$(devmapper_incdir)/libdevmapper.h),0)
|
|
||||||
CPPFLAGS += -DLIBDM_API_GET_ERRNO
|
|
||||||
endif
|
|
||||||
|
|
||||||
-ifneq ($(call check_var,ELS_DTAG_LNK_INTEGRITY,$(LINUX_HEADERS_INCDIR)/scsi/fc/fc_els.h),0)
|
|
||||||
+ifneq ($(call check_var,ELS_DTAG_LNK_INTEGRITY,$(kernel_incdir)/scsi/fc/fc_els.h),0)
|
|
||||||
CPPFLAGS += -DFPIN_EVENT_HANDLER
|
|
||||||
FPIN_SUPPORT = 1
|
|
||||||
endif
|
|
@ -0,0 +1,55 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Martin Wilck <mwilck@suse.com>
|
||||||
|
Date: Mon, 2 Jan 2023 12:39:36 +0100
|
||||||
|
Subject: [PATCH] libmpathpersist: use conf->timeout for updating persistent
|
||||||
|
reservations
|
||||||
|
|
||||||
|
On systems with many LUNs, multipathd may fail to respond within the
|
||||||
|
default timeout to a "setprkey" command because the vecs lock is held
|
||||||
|
by the path checker. Honor the globally configured uxsock timeout in
|
||||||
|
libmpathpersist.
|
||||||
|
|
||||||
|
Reported-by: boposki (github.com/opensvc/multipath-tools/pull/58)
|
||||||
|
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
||||||
|
Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
---
|
||||||
|
libmpathpersist/mpath_updatepr.c | 11 ++++++++++-
|
||||||
|
1 file changed, 10 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/libmpathpersist/mpath_updatepr.c b/libmpathpersist/mpath_updatepr.c
|
||||||
|
index 4529a82b..36bd777e 100644
|
||||||
|
--- a/libmpathpersist/mpath_updatepr.c
|
||||||
|
+++ b/libmpathpersist/mpath_updatepr.c
|
||||||
|
@@ -14,6 +14,9 @@
|
||||||
|
#include <mpath_persist.h>
|
||||||
|
#include "debug.h"
|
||||||
|
#include "mpath_cmd.h"
|
||||||
|
+#include "vector.h"
|
||||||
|
+#include "globals.h"
|
||||||
|
+#include "config.h"
|
||||||
|
#include "uxsock.h"
|
||||||
|
#include "mpathpr.h"
|
||||||
|
|
||||||
|
@@ -24,6 +27,12 @@ static int do_update_pr(char *alias, char *cmd, char *key)
|
||||||
|
char str[256];
|
||||||
|
char *reply;
|
||||||
|
int ret = 0;
|
||||||
|
+ int timeout;
|
||||||
|
+ struct config *conf;
|
||||||
|
+
|
||||||
|
+ conf = get_multipath_config();
|
||||||
|
+ timeout = conf->uxsock_timeout;
|
||||||
|
+ put_multipath_config(conf);
|
||||||
|
|
||||||
|
fd = mpath_connect();
|
||||||
|
if (fd == -1) {
|
||||||
|
@@ -41,7 +50,7 @@ static int do_update_pr(char *alias, char *cmd, char *key)
|
||||||
|
mpath_disconnect(fd);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
- ret = recv_packet(fd, &reply, DEFAULT_REPLY_TIMEOUT);
|
||||||
|
+ ret = recv_packet(fd, &reply, timeout);
|
||||||
|
if (ret < 0) {
|
||||||
|
condlog(2, "%s: message=%s recv error=%d", alias, str, errno);
|
||||||
|
ret = -1;
|
@ -1,185 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Martin Wilck <mwilck@suse.com>
|
|
||||||
Date: Thu, 27 Oct 2022 16:25:04 +0200
|
|
||||||
Subject: [PATCH] multipath-tools: Makefiles: use $(mandir)
|
|
||||||
|
|
||||||
Simply use $(mandir) rather than 3 different variables.
|
|
||||||
|
|
||||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
|
||||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
---
|
|
||||||
Makefile.inc | 4 +---
|
|
||||||
kpartx/Makefile | 6 +++---
|
|
||||||
libdmmp/Makefile | 8 ++++----
|
|
||||||
libmpathpersist/Makefile | 10 +++++-----
|
|
||||||
mpathpersist/Makefile | 6 +++---
|
|
||||||
multipath/Makefile | 12 ++++++------
|
|
||||||
multipathd/Makefile | 10 +++++-----
|
|
||||||
7 files changed, 27 insertions(+), 29 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/Makefile.inc b/Makefile.inc
|
|
||||||
index 38bd1d80..f3c84771 100644
|
|
||||||
--- a/Makefile.inc
|
|
||||||
+++ b/Makefile.inc
|
|
||||||
@@ -58,9 +58,7 @@ bindir = $(exec_prefix)/sbin
|
|
||||||
multipathdir = $(TOPDIR)/libmultipath
|
|
||||||
daemondir = $(TOPDIR)/multipathd
|
|
||||||
mpathutildir = $(TOPDIR)/libmpathutil
|
|
||||||
-man8dir = $(usr_prefix)/share/man/man8
|
|
||||||
-man5dir = $(usr_prefix)/share/man/man5
|
|
||||||
-man3dir = $(usr_prefix)/share/man/man3
|
|
||||||
+mandir := $(usr_prefix)/share/man
|
|
||||||
LIB := $(if $(shell test -d /lib64 && echo 1),lib64,lib)
|
|
||||||
syslibdir = $(prefix)/$(LIB)
|
|
||||||
usrlibdir = $(usr_prefix)/$(LIB)
|
|
||||||
diff --git a/kpartx/Makefile b/kpartx/Makefile
|
|
||||||
index bdf2d035..464925ad 100644
|
|
||||||
--- a/kpartx/Makefile
|
|
||||||
+++ b/kpartx/Makefile
|
|
||||||
@@ -32,12 +32,12 @@ install: $(EXEC) $(EXEC).8
|
|
||||||
$(INSTALL_PROGRAM) -m 644 dm-parts.rules $(DESTDIR)$(libudevdir)/rules.d/11-dm-parts.rules
|
|
||||||
$(INSTALL_PROGRAM) -m 644 kpartx.rules $(DESTDIR)$(libudevdir)/rules.d/66-kpartx.rules
|
|
||||||
$(INSTALL_PROGRAM) -m 644 del-part-nodes.rules $(DESTDIR)$(libudevdir)/rules.d/68-del-part-nodes.rules
|
|
||||||
- $(INSTALL_PROGRAM) -d $(DESTDIR)$(man8dir)
|
|
||||||
- $(INSTALL_PROGRAM) -m 644 $(EXEC).8 $(DESTDIR)$(man8dir)
|
|
||||||
+ $(INSTALL_PROGRAM) -d $(DESTDIR)$(mandir)/man8
|
|
||||||
+ $(INSTALL_PROGRAM) -m 644 $(EXEC).8 $(DESTDIR)$(mandir)/man8
|
|
||||||
|
|
||||||
uninstall:
|
|
||||||
$(RM) $(DESTDIR)$(bindir)/$(EXEC)
|
|
||||||
- $(RM) $(DESTDIR)$(man8dir)/$(EXEC).8
|
|
||||||
+ $(RM) $(DESTDIR)$(mandir)/man8/$(EXEC).8
|
|
||||||
$(RM) $(DESTDIR)$(libudevdir)/kpartx_id
|
|
||||||
$(RM) $(DESTDIR)$(libudevdir)/rules.d/11-dm-parts.rules
|
|
||||||
$(RM) $(DESTDIR)$(libudevdir)/rules.d/66-kpartx.rules
|
|
||||||
diff --git a/libdmmp/Makefile b/libdmmp/Makefile
|
|
||||||
index e4589250..985b694b 100644
|
|
||||||
--- a/libdmmp/Makefile
|
|
||||||
+++ b/libdmmp/Makefile
|
|
||||||
@@ -45,17 +45,17 @@ install:
|
|
||||||
$(DESTDIR)$(pkgconfdir)/$(PKGFILE)
|
|
||||||
perl -i -pe 's|__INCLUDEDIR__|$(includedir)|g' \
|
|
||||||
$(DESTDIR)$(pkgconfdir)/$(PKGFILE)
|
|
||||||
- $(INSTALL_PROGRAM) -d 755 $(DESTDIR)$(man3dir)
|
|
||||||
- $(INSTALL_PROGRAM) -m 644 -t $(DESTDIR)$(man3dir) docs/man/*.3
|
|
||||||
+ $(INSTALL_PROGRAM) -d 755 $(DESTDIR)$(mandir)/man3
|
|
||||||
+ $(INSTALL_PROGRAM) -m 644 -t $(DESTDIR)$(mandir)/man3 docs/man/*.3
|
|
||||||
|
|
||||||
uninstall:
|
|
||||||
$(RM) $(DESTDIR)$(usrlibdir)/$(LIBS)
|
|
||||||
$(RM) $(DESTDIR)$(includedir)/$(HEADERS)
|
|
||||||
$(RM) $(DESTDIR)$(usrlibdir)/$(DEVLIB)
|
|
||||||
- @for file in $(DESTDIR)$(man3dir)/dmmp_*; do \
|
|
||||||
+ @for file in $(DESTDIR)$(mandir)/man3/dmmp_*; do \
|
|
||||||
$(RM) $$file; \
|
|
||||||
done
|
|
||||||
- $(RM) $(DESTDIR)$(man3dir)/libdmmp.h*
|
|
||||||
+ $(RM) $(DESTDIR)$(mandir)/man3/libdmmp.h*
|
|
||||||
$(RM) $(DESTDIR)$(pkgconfdir)/$(PKGFILE)
|
|
||||||
|
|
||||||
clean: dep_clean
|
|
||||||
diff --git a/libmpathpersist/Makefile b/libmpathpersist/Makefile
|
|
||||||
index 4e1717ef..479524d4 100644
|
|
||||||
--- a/libmpathpersist/Makefile
|
|
||||||
+++ b/libmpathpersist/Makefile
|
|
||||||
@@ -36,17 +36,17 @@ install: all
|
|
||||||
$(INSTALL_PROGRAM) -d $(DESTDIR)$(syslibdir)
|
|
||||||
$(INSTALL_PROGRAM) -m 755 $(LIBS) $(DESTDIR)$(syslibdir)/$(LIBS)
|
|
||||||
$(INSTALL_PROGRAM) -m 755 -d $(DESTDIR)$(syslibdir)
|
|
||||||
- $(INSTALL_PROGRAM) -m 755 -d $(DESTDIR)$(man3dir)
|
|
||||||
+ $(INSTALL_PROGRAM) -m 755 -d $(DESTDIR)$(mandir)/man3
|
|
||||||
$(INSTALL_PROGRAM) -m 755 -d $(DESTDIR)$(includedir)
|
|
||||||
$(LN) $(LIBS) $(DESTDIR)$(syslibdir)/$(DEVLIB)
|
|
||||||
- $(INSTALL_PROGRAM) -m 644 mpath_persistent_reserve_in.3 $(DESTDIR)$(man3dir)
|
|
||||||
- $(INSTALL_PROGRAM) -m 644 mpath_persistent_reserve_out.3 $(DESTDIR)$(man3dir)
|
|
||||||
+ $(INSTALL_PROGRAM) -m 644 mpath_persistent_reserve_in.3 $(DESTDIR)$(mandir)/man3
|
|
||||||
+ $(INSTALL_PROGRAM) -m 644 mpath_persistent_reserve_out.3 $(DESTDIR)$(mandir)/man3
|
|
||||||
$(INSTALL_PROGRAM) -m 644 mpath_persist.h $(DESTDIR)$(includedir)
|
|
||||||
|
|
||||||
uninstall:
|
|
||||||
$(RM) $(DESTDIR)$(syslibdir)/$(LIBS)
|
|
||||||
- $(RM) $(DESTDIR)$(man3dir)/mpath_persistent_reserve_in.3
|
|
||||||
- $(RM) $(DESTDIR)$(man3dir)/mpath_persistent_reserve_out.3
|
|
||||||
+ $(RM) $(DESTDIR)$(mandir)/man3/mpath_persistent_reserve_in.3
|
|
||||||
+ $(RM) $(DESTDIR)$(mandir)/man3/mpath_persistent_reserve_out.3
|
|
||||||
$(RM) $(DESTDIR)$(includedir)/mpath_persist.h
|
|
||||||
$(RM) $(DESTDIR)$(syslibdir)/$(DEVLIB)
|
|
||||||
|
|
||||||
diff --git a/mpathpersist/Makefile b/mpathpersist/Makefile
|
|
||||||
index 2219c86a..d62537b5 100644
|
|
||||||
--- a/mpathpersist/Makefile
|
|
||||||
+++ b/mpathpersist/Makefile
|
|
||||||
@@ -19,8 +19,8 @@ $(EXEC): $(OBJS)
|
|
||||||
install:
|
|
||||||
$(INSTALL_PROGRAM) -d $(DESTDIR)$(bindir)
|
|
||||||
$(INSTALL_PROGRAM) -m 755 $(EXEC) $(DESTDIR)$(bindir)/
|
|
||||||
- $(INSTALL_PROGRAM) -d $(DESTDIR)$(man8dir)
|
|
||||||
- $(INSTALL_PROGRAM) -m 644 $(EXEC).8 $(DESTDIR)$(man8dir)
|
|
||||||
+ $(INSTALL_PROGRAM) -d $(DESTDIR)$(mandir)/man8
|
|
||||||
+ $(INSTALL_PROGRAM) -m 644 $(EXEC).8 $(DESTDIR)$(mandir)/man8
|
|
||||||
|
|
||||||
clean: dep_clean
|
|
||||||
$(RM) core *.o $(EXEC)
|
|
||||||
@@ -29,7 +29,7 @@ include $(wildcard $(OBJS:.o=.d))
|
|
||||||
|
|
||||||
uninstall:
|
|
||||||
$(RM) $(DESTDIR)$(bindir)/$(EXEC)
|
|
||||||
- $(RM) $(DESTDIR)$(man8dir)/$(EXEC).8
|
|
||||||
+ $(RM) $(DESTDIR)$(mandir)/man8/$(EXEC).8
|
|
||||||
|
|
||||||
dep_clean:
|
|
||||||
$(RM) $(OBJS:.o=.d)
|
|
||||||
diff --git a/multipath/Makefile b/multipath/Makefile
|
|
||||||
index 116348e2..1c4e7a52 100644
|
|
||||||
--- a/multipath/Makefile
|
|
||||||
+++ b/multipath/Makefile
|
|
||||||
@@ -28,10 +28,10 @@ install:
|
|
||||||
$(INSTALL_PROGRAM) -m 644 modules-load.conf $(DESTDIR)$(modulesloaddir)/multipath.conf
|
|
||||||
$(INSTALL_PROGRAM) -d $(DESTDIR)$(tmpfilesdir)
|
|
||||||
$(INSTALL_PROGRAM) -m 644 tmpfiles.conf $(DESTDIR)$(tmpfilesdir)/multipath.conf
|
|
||||||
- $(INSTALL_PROGRAM) -d $(DESTDIR)$(man8dir)
|
|
||||||
- $(INSTALL_PROGRAM) -m 644 $(EXEC).8 $(DESTDIR)$(man8dir)
|
|
||||||
- $(INSTALL_PROGRAM) -d $(DESTDIR)$(man5dir)
|
|
||||||
- $(INSTALL_PROGRAM) -m 644 $(EXEC).conf.5 $(DESTDIR)$(man5dir)
|
|
||||||
+ $(INSTALL_PROGRAM) -d $(DESTDIR)$(mandir)/man8
|
|
||||||
+ $(INSTALL_PROGRAM) -m 644 $(EXEC).8 $(DESTDIR)$(mandir)/man8
|
|
||||||
+ $(INSTALL_PROGRAM) -d $(DESTDIR)$(mandir)/man5
|
|
||||||
+ $(INSTALL_PROGRAM) -m 644 $(EXEC).conf.5 $(DESTDIR)$(mandir)/man5
|
|
||||||
ifneq ($(SCSI_DH_MODULES_PRELOAD),)
|
|
||||||
$(INSTALL_PROGRAM) -m 644 scsi_dh.conf $(DESTDIR)$(modulesloaddir)/scsi_dh.conf
|
|
||||||
for _x in $(SCSI_DH_MODULES_PRELOAD); do echo "$$_x"; done \
|
|
||||||
@@ -44,8 +44,8 @@ uninstall:
|
|
||||||
$(RM) $(DESTDIR)$(modulesloaddir)/multipath.conf
|
|
||||||
$(RM) $(DESTDIR)$(modulesloaddir)/scsi_dh.conf
|
|
||||||
$(RM) $(DESTDIR)$(libudevdir)/rules.d/56-multipath.rules
|
|
||||||
- $(RM) $(DESTDIR)$(man8dir)/$(EXEC).8
|
|
||||||
- $(RM) $(DESTDIR)$(man5dir)/$(EXEC).conf.5
|
|
||||||
+ $(RM) $(DESTDIR)$(mandir)/man8/$(EXEC).8
|
|
||||||
+ $(RM) $(DESTDIR)$(mandir)/man5/$(EXEC).conf.5
|
|
||||||
|
|
||||||
clean: dep_clean
|
|
||||||
$(RM) core *.o $(EXEC) multipath.rules tmpfiles.conf
|
|
||||||
diff --git a/multipathd/Makefile b/multipathd/Makefile
|
|
||||||
index c462d7b1..78aefee0 100644
|
|
||||||
--- a/multipathd/Makefile
|
|
||||||
+++ b/multipathd/Makefile
|
|
||||||
@@ -89,14 +89,14 @@ ifdef SYSTEMD
|
|
||||||
$(INSTALL_PROGRAM) -m 644 $(EXEC).service $(DESTDIR)$(unitdir)
|
|
||||||
$(INSTALL_PROGRAM) -m 644 $(EXEC).socket $(DESTDIR)$(unitdir)
|
|
||||||
endif
|
|
||||||
- $(INSTALL_PROGRAM) -d $(DESTDIR)$(man8dir)
|
|
||||||
- $(INSTALL_PROGRAM) -m 644 $(EXEC).8 $(DESTDIR)$(man8dir)
|
|
||||||
- $(INSTALL_PROGRAM) -m 644 $(CLI).8 $(DESTDIR)$(man8dir)
|
|
||||||
+ $(INSTALL_PROGRAM) -d $(DESTDIR)$(mandir)/man8
|
|
||||||
+ $(INSTALL_PROGRAM) -m 644 $(EXEC).8 $(DESTDIR)$(mandir)/man8
|
|
||||||
+ $(INSTALL_PROGRAM) -m 644 $(CLI).8 $(DESTDIR)$(mandir)/man8
|
|
||||||
|
|
||||||
uninstall:
|
|
||||||
$(RM) $(DESTDIR)$(bindir)/$(EXEC) $(DESTDIR)$(bindir)/$(CLI)
|
|
||||||
- $(RM) $(DESTDIR)$(man8dir)/$(EXEC).8
|
|
||||||
- $(RM) $(DESTDIR)$(man8dir)/$(CLI).8
|
|
||||||
+ $(RM) $(DESTDIR)$(mandir)/man8/$(EXEC).8
|
|
||||||
+ $(RM) $(DESTDIR)$(mandir)/man8/$(CLI).8
|
|
||||||
$(RM) $(DESTDIR)$(unitdir)/$(EXEC).service
|
|
||||||
$(RM) $(DESTDIR)$(unitdir)/$(EXEC).socket
|
|
||||||
|
|
@ -0,0 +1,77 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Martin Wilck <mwilck@suse.com>
|
||||||
|
Date: Wed, 30 Nov 2022 21:07:45 +0100
|
||||||
|
Subject: [PATCH] libmultipath: pathinfo: don't fail for devices lacking
|
||||||
|
INQUIRY properties
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Some SAS devices (e.g. Seagate factory recertified 'white label' drives) may
|
||||||
|
come with the Vendor field blank. This causes Multipath to fail to
|
||||||
|
complete the discovery of those devices.
|
||||||
|
|
||||||
|
Such devices violate the SCSI Spec. From the SPC-6, §6.7.2:
|
||||||
|
"The T10 VENDOR IDENTIFICATION field contains eight bytes of left-aligned
|
||||||
|
ASCII data (see 4.3.1) identifying the manufacturer of the logical unit. The
|
||||||
|
T10 vendor identification shall be one assigned by INCITS.".
|
||||||
|
|
||||||
|
But as we don't identify WWIDs by vendor and product, we don't need to discard
|
||||||
|
these devices right away. We can go ahead fingers crossed, and hope that the
|
||||||
|
the other VPD pages for the device are correct.
|
||||||
|
|
||||||
|
We obviously can't look up reasonable device properties for such devices in
|
||||||
|
our hwtable. It would be up to the user to deal with that.
|
||||||
|
|
||||||
|
Reported by: Allyn Malventano (github.com/opensvc/multipath-tools/issues/56)
|
||||||
|
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
||||||
|
Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
---
|
||||||
|
libmultipath/discovery.c | 22 +++++++++++++---------
|
||||||
|
1 file changed, 13 insertions(+), 9 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c
|
||||||
|
index d9ee2cb9..67ac0e6d 100644
|
||||||
|
--- a/libmultipath/discovery.c
|
||||||
|
+++ b/libmultipath/discovery.c
|
||||||
|
@@ -1472,6 +1472,7 @@ scsi_sysfs_pathinfo (struct path *pp, const struct _vector *hwtable)
|
||||||
|
{
|
||||||
|
struct udev_device *parent;
|
||||||
|
const char *attr_path = NULL;
|
||||||
|
+ static const char unknown[] = "UNKNOWN";
|
||||||
|
|
||||||
|
parent = pp->udev;
|
||||||
|
while (parent) {
|
||||||
|
@@ -1492,19 +1493,22 @@ scsi_sysfs_pathinfo (struct path *pp, const struct _vector *hwtable)
|
||||||
|
if (!attr_path || pp->sg_id.host_no == -1)
|
||||||
|
return PATHINFO_FAILED;
|
||||||
|
|
||||||
|
- if (sysfs_get_vendor(parent, pp->vendor_id, SCSI_VENDOR_SIZE) <= 0)
|
||||||
|
- return PATHINFO_FAILED;;
|
||||||
|
-
|
||||||
|
+ if (sysfs_get_vendor(parent, pp->vendor_id, SCSI_VENDOR_SIZE) <= 0) {
|
||||||
|
+ condlog(1, "%s: broken device without vendor ID", pp->dev);
|
||||||
|
+ strlcpy(pp->vendor_id, unknown, SCSI_VENDOR_SIZE);
|
||||||
|
+ }
|
||||||
|
condlog(3, "%s: vendor = %s", pp->dev, pp->vendor_id);
|
||||||
|
|
||||||
|
- if (sysfs_get_model(parent, pp->product_id, PATH_PRODUCT_SIZE) <= 0)
|
||||||
|
- return PATHINFO_FAILED;;
|
||||||
|
-
|
||||||
|
+ if (sysfs_get_model(parent, pp->product_id, PATH_PRODUCT_SIZE) <= 0) {
|
||||||
|
+ condlog(1, "%s: broken device without product ID", pp->dev);
|
||||||
|
+ strlcpy(pp->product_id, unknown, PATH_PRODUCT_SIZE);
|
||||||
|
+ }
|
||||||
|
condlog(3, "%s: product = %s", pp->dev, pp->product_id);
|
||||||
|
|
||||||
|
- if (sysfs_get_rev(parent, pp->rev, PATH_REV_SIZE) < 0)
|
||||||
|
- return PATHINFO_FAILED;;
|
||||||
|
-
|
||||||
|
+ if (sysfs_get_rev(parent, pp->rev, PATH_REV_SIZE) < 0) {
|
||||||
|
+ condlog(2, "%s: broken device without revision", pp->dev);
|
||||||
|
+ strlcpy(pp->rev, unknown, PATH_REV_SIZE);
|
||||||
|
+ }
|
||||||
|
condlog(3, "%s: rev = %s", pp->dev, pp->rev);
|
||||||
|
|
||||||
|
/*
|
@ -1,36 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Martin Wilck <mwilck@suse.com>
|
|
||||||
Date: Thu, 27 Oct 2022 16:34:34 +0200
|
|
||||||
Subject: [PATCH] multipath-tools: Makefile.inc: simplify expression for
|
|
||||||
SYSTEMD
|
|
||||||
|
|
||||||
Use a shell "or" function here. Note the use of "strip" to remove
|
|
||||||
the whitespace that are caused by the line break.
|
|
||||||
|
|
||||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
|
||||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
---
|
|
||||||
Makefile.inc | 10 ++--------
|
|
||||||
1 file changed, 2 insertions(+), 8 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/Makefile.inc b/Makefile.inc
|
|
||||||
index f3c84771..1a08b8fa 100644
|
|
||||||
--- a/Makefile.inc
|
|
||||||
+++ b/Makefile.inc
|
|
||||||
@@ -28,14 +28,8 @@ ifeq ($(TOPDIR),)
|
|
||||||
TOPDIR = ..
|
|
||||||
endif
|
|
||||||
|
|
||||||
-ifeq ($(shell $(PKGCONFIG) --modversion libsystemd >/dev/null 2>&1 && echo 1), 1)
|
|
||||||
- SYSTEMD = $(shell $(PKGCONFIG) --modversion libsystemd | awk '{print $$1}')
|
|
||||||
-else
|
|
||||||
- ifeq ($(shell systemctl --version >/dev/null 2>&1 && echo 1), 1)
|
|
||||||
- SYSTEMD = $(shell systemctl --version 2> /dev/null | \
|
|
||||||
- sed -n 's/systemd \([0-9]*\).*/\1/p')
|
|
||||||
- endif
|
|
||||||
-endif
|
|
||||||
+SYSTEMD := $(strip $(or $(shell $(PKGCONFIG) --modversion libsystemd 2>/dev/null | awk '{print $$1}'), \
|
|
||||||
+ $(shell systemctl --version 2>/dev/null | sed -n 's/systemd \([0-9]*\).*/\1/p')))
|
|
||||||
|
|
||||||
# Allow user to override default location.
|
|
||||||
|
|
26
0010-libmultipath-bump-ABI-version-to-18.0.0.patch
Normal file
26
0010-libmultipath-bump-ABI-version-to-18.0.0.patch
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Martin Wilck <mwilck@suse.com>
|
||||||
|
Date: Wed, 25 Jan 2023 11:35:38 +0100
|
||||||
|
Subject: [PATCH] libmultipath: bump ABI version to 18.0.0
|
||||||
|
|
||||||
|
Commit 6b81153 ("libmultipath: make prflag an enum") changed
|
||||||
|
the size and member offsets of struct multipath.
|
||||||
|
|
||||||
|
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
---
|
||||||
|
libmultipath/libmultipath.version | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/libmultipath/libmultipath.version b/libmultipath/libmultipath.version
|
||||||
|
index faef2a2d..015623cc 100644
|
||||||
|
--- a/libmultipath/libmultipath.version
|
||||||
|
+++ b/libmultipath/libmultipath.version
|
||||||
|
@@ -43,7 +43,7 @@ LIBMPATHCOMMON_1.0.0 {
|
||||||
|
put_multipath_config;
|
||||||
|
};
|
||||||
|
|
||||||
|
-LIBMULTIPATH_17.0.0 {
|
||||||
|
+LIBMULTIPATH_18.0.0 {
|
||||||
|
global:
|
||||||
|
/* symbols referenced by multipath and multipathd */
|
||||||
|
add_foreign;
|
@ -1,68 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Martin Wilck <mwilck@suse.com>
|
|
||||||
Date: Thu, 27 Oct 2022 16:53:04 +0200
|
|
||||||
Subject: [PATCH] multipath-tools: Makefile.inc: untangle paths and source
|
|
||||||
directories
|
|
||||||
|
|
||||||
Only the installation paths can be customized. Move the definitions
|
|
||||||
of $(multipathdir) etc. further down.
|
|
||||||
|
|
||||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
|
||||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
---
|
|
||||||
Makefile.inc | 23 ++++++++++++-----------
|
|
||||||
1 file changed, 12 insertions(+), 11 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/Makefile.inc b/Makefile.inc
|
|
||||||
index 1a08b8fa..6ec8201b 100644
|
|
||||||
--- a/Makefile.inc
|
|
||||||
+++ b/Makefile.inc
|
|
||||||
@@ -31,8 +31,6 @@ endif
|
|
||||||
SYSTEMD := $(strip $(or $(shell $(PKGCONFIG) --modversion libsystemd 2>/dev/null | awk '{print $$1}'), \
|
|
||||||
$(shell systemctl --version 2>/dev/null | sed -n 's/systemd \([0-9]*\).*/\1/p')))
|
|
||||||
|
|
||||||
-# Allow user to override default location.
|
|
||||||
-
|
|
||||||
# Paths. All these can be overridden on the "make" command line.
|
|
||||||
prefix =
|
|
||||||
# Prefix for binaries
|
|
||||||
@@ -49,20 +47,11 @@ modulesloaddir := $(systemd_prefix)/lib/modules-load.d
|
|
||||||
libudevdir := $(systemd_prefix)/lib/udev
|
|
||||||
udevrulesdir := $(libudevdir)/rules.d
|
|
||||||
bindir = $(exec_prefix)/sbin
|
|
||||||
-multipathdir = $(TOPDIR)/libmultipath
|
|
||||||
-daemondir = $(TOPDIR)/multipathd
|
|
||||||
-mpathutildir = $(TOPDIR)/libmpathutil
|
|
||||||
mandir := $(usr_prefix)/share/man
|
|
||||||
LIB := $(if $(shell test -d /lib64 && echo 1),lib64,lib)
|
|
||||||
syslibdir = $(prefix)/$(LIB)
|
|
||||||
usrlibdir = $(usr_prefix)/$(LIB)
|
|
||||||
libdir = $(prefix)/$(LIB)/multipath
|
|
||||||
-mpathpersistdir = $(TOPDIR)/libmpathpersist
|
|
||||||
-mpathcmddir = $(TOPDIR)/libmpathcmd
|
|
||||||
-mpathvaliddir = $(TOPDIR)/libmpathvalid
|
|
||||||
-thirdpartydir = $(TOPDIR)/third-party
|
|
||||||
-libdmmpdir = $(TOPDIR)/libdmmp
|
|
||||||
-nvmedir = $(TOPDIR)/libmultipath/nvme
|
|
||||||
includedir = $(usr_prefix)/include
|
|
||||||
pkgconfdir = $(usrlibdir)/pkgconfig
|
|
||||||
plugindir := $(prefix)/$(LIB)/multipath
|
|
||||||
@@ -124,6 +113,18 @@ SHARED_FLAGS = -shared
|
|
||||||
LDFLAGS := $(LDFLAGS) -Wl,-z,relro -Wl,-z,now -Wl,-z,defs
|
|
||||||
BIN_LDFLAGS = -pie
|
|
||||||
|
|
||||||
+# Source code directories. Don't modify.
|
|
||||||
+
|
|
||||||
+multipathdir = $(TOPDIR)/libmultipath
|
|
||||||
+daemondir = $(TOPDIR)/multipathd
|
|
||||||
+mpathutildir = $(TOPDIR)/libmpathutil
|
|
||||||
+mpathpersistdir = $(TOPDIR)/libmpathpersist
|
|
||||||
+mpathcmddir = $(TOPDIR)/libmpathcmd
|
|
||||||
+mpathvaliddir = $(TOPDIR)/libmpathvalid
|
|
||||||
+thirdpartydir = $(TOPDIR)/third-party
|
|
||||||
+libdmmpdir = $(TOPDIR)/libdmmp
|
|
||||||
+nvmedir = $(TOPDIR)/libmultipath/nvme
|
|
||||||
+
|
|
||||||
# Check whether a function with name $1 has been declared in header file $2.
|
|
||||||
check_func = $(shell \
|
|
||||||
if grep -Eq "^[^[:blank:]]+[[:blank:]]+$1[[:blank:]]*(.*)*" "$2"; then \
|
|
@ -15,7 +15,7 @@ Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|||||||
3 files changed, 5 insertions(+), 5 deletions(-)
|
3 files changed, 5 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
diff --git a/Makefile.inc b/Makefile.inc
|
diff --git a/Makefile.inc b/Makefile.inc
|
||||||
index 866ab274..8c5a08a2 100644
|
index 2e25d2ea..540e1dfc 100644
|
||||||
--- a/Makefile.inc
|
--- a/Makefile.inc
|
||||||
+++ b/Makefile.inc
|
+++ b/Makefile.inc
|
||||||
@@ -34,9 +34,9 @@ endif
|
@@ -34,9 +34,9 @@ endif
|
@ -1,110 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Martin Wilck <mwilck@suse.com>
|
|
||||||
Date: Thu, 27 Oct 2022 17:17:00 +0200
|
|
||||||
Subject: [PATCH] multipath-tools: Makefiles: replace $(libdir) by $(plugindir)
|
|
||||||
|
|
||||||
The make variables $(libdir) and $(plugindir) are redundant.
|
|
||||||
I overlooked that in af15832 ("multipath-tools: make multipath_dir a
|
|
||||||
compiled-in option"). While libdir has existed longer, I think
|
|
||||||
plugindir describes better what this path is used for, so replace
|
|
||||||
libdir by plugindir.
|
|
||||||
|
|
||||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
|
||||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
---
|
|
||||||
Makefile.inc | 1 -
|
|
||||||
libmpathutil/Makefile | 1 -
|
|
||||||
libmultipath/Makefile | 2 +-
|
|
||||||
libmultipath/checkers/Makefile | 4 ++--
|
|
||||||
libmultipath/foreign/Makefile | 4 ++--
|
|
||||||
libmultipath/prioritizers/Makefile | 4 ++--
|
|
||||||
6 files changed, 7 insertions(+), 9 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/Makefile.inc b/Makefile.inc
|
|
||||||
index 6ec8201b..17707a3e 100644
|
|
||||||
--- a/Makefile.inc
|
|
||||||
+++ b/Makefile.inc
|
|
||||||
@@ -51,7 +51,6 @@ mandir := $(usr_prefix)/share/man
|
|
||||||
LIB := $(if $(shell test -d /lib64 && echo 1),lib64,lib)
|
|
||||||
syslibdir = $(prefix)/$(LIB)
|
|
||||||
usrlibdir = $(usr_prefix)/$(LIB)
|
|
||||||
-libdir = $(prefix)/$(LIB)/multipath
|
|
||||||
includedir = $(usr_prefix)/include
|
|
||||||
pkgconfdir = $(usrlibdir)/pkgconfig
|
|
||||||
plugindir := $(prefix)/$(LIB)/multipath
|
|
||||||
diff --git a/libmpathutil/Makefile b/libmpathutil/Makefile
|
|
||||||
index 68b1c7d6..c913c761 100644
|
|
||||||
--- a/libmpathutil/Makefile
|
|
||||||
+++ b/libmpathutil/Makefile
|
|
||||||
@@ -54,7 +54,6 @@ abi: $(LIBS:%.so.$(SONAME)=%-nv.abi)
|
|
||||||
install: all
|
|
||||||
$(INSTALL_PROGRAM) -d $(DESTDIR)$(syslibdir)
|
|
||||||
$(INSTALL_PROGRAM) -m 755 $(LIBS) $(DESTDIR)$(syslibdir)/$(LIBS)
|
|
||||||
- $(INSTALL_PROGRAM) -m 755 -d $(DESTDIR)$(libdir)
|
|
||||||
$(LN) $(LIBS) $(DESTDIR)$(syslibdir)/$(DEVLIB)
|
|
||||||
|
|
||||||
uninstall:
|
|
||||||
diff --git a/libmultipath/Makefile b/libmultipath/Makefile
|
|
||||||
index f0df27c0..c7d4fc99 100644
|
|
||||||
--- a/libmultipath/Makefile
|
|
||||||
+++ b/libmultipath/Makefile
|
|
||||||
@@ -119,7 +119,7 @@ test-lib: ../tests/$(LIBS)
|
|
||||||
install: all
|
|
||||||
$(INSTALL_PROGRAM) -d $(DESTDIR)$(syslibdir)
|
|
||||||
$(INSTALL_PROGRAM) -m 755 $(LIBS) $(DESTDIR)$(syslibdir)/$(LIBS)
|
|
||||||
- $(INSTALL_PROGRAM) -m 755 -d $(DESTDIR)$(libdir)
|
|
||||||
+ $(INSTALL_PROGRAM) -m 755 -d $(DESTDIR)$(plugindir)
|
|
||||||
$(LN) $(LIBS) $(DESTDIR)$(syslibdir)/$(DEVLIB)
|
|
||||||
|
|
||||||
uninstall:
|
|
||||||
diff --git a/libmultipath/checkers/Makefile b/libmultipath/checkers/Makefile
|
|
||||||
index c9a2c4ca..39ad76e0 100644
|
|
||||||
--- a/libmultipath/checkers/Makefile
|
|
||||||
+++ b/libmultipath/checkers/Makefile
|
|
||||||
@@ -25,10 +25,10 @@ libcheck%.so: %.o
|
|
||||||
$(CC) $(LDFLAGS) $(SHARED_FLAGS) -o $@ $^ $(LIBDEPS)
|
|
||||||
|
|
||||||
install:
|
|
||||||
- $(INSTALL_PROGRAM) -m 755 $(LIBS) $(DESTDIR)$(libdir)
|
|
||||||
+ $(INSTALL_PROGRAM) -m 755 $(LIBS) $(DESTDIR)$(plugindir)
|
|
||||||
|
|
||||||
uninstall:
|
|
||||||
- for file in $(LIBS); do $(RM) $(DESTDIR)$(libdir)/$$file; done
|
|
||||||
+ for file in $(LIBS); do $(RM) $(DESTDIR)$(plugindir)/$$file; done
|
|
||||||
|
|
||||||
clean: dep_clean
|
|
||||||
$(RM) core *.a *.o *.gz *.so
|
|
||||||
diff --git a/libmultipath/foreign/Makefile b/libmultipath/foreign/Makefile
|
|
||||||
index d0232f20..8bf9047b 100644
|
|
||||||
--- a/libmultipath/foreign/Makefile
|
|
||||||
+++ b/libmultipath/foreign/Makefile
|
|
||||||
@@ -17,10 +17,10 @@ libforeign-%.so: %.o
|
|
||||||
$(CC) $(LDFLAGS) $(SHARED_FLAGS) -o $@ $^ $(LIBDEPS)
|
|
||||||
|
|
||||||
install:
|
|
||||||
- $(INSTALL_PROGRAM) -m 755 $(LIBS) $(DESTDIR)$(libdir)
|
|
||||||
+ $(INSTALL_PROGRAM) -m 755 $(LIBS) $(DESTDIR)$(plugindir)
|
|
||||||
|
|
||||||
uninstall:
|
|
||||||
- for file in $(LIBS); do $(RM) $(DESTDIR)$(libdir)/$$file; done
|
|
||||||
+ for file in $(LIBS); do $(RM) $(DESTDIR)$(plugindir)/$$file; done
|
|
||||||
|
|
||||||
clean: dep_clean
|
|
||||||
$(RM) core *.a *.o *.gz *.so
|
|
||||||
diff --git a/libmultipath/prioritizers/Makefile b/libmultipath/prioritizers/Makefile
|
|
||||||
index 97155f51..72eefe49 100644
|
|
||||||
--- a/libmultipath/prioritizers/Makefile
|
|
||||||
+++ b/libmultipath/prioritizers/Makefile
|
|
||||||
@@ -37,10 +37,10 @@ libprio%.so: %.o
|
|
||||||
$(CC) $(LDFLAGS) $(SHARED_FLAGS) -o $@ $^ $(LIBDEPS)
|
|
||||||
|
|
||||||
install: $(LIBS)
|
|
||||||
- $(INSTALL_PROGRAM) -m 755 libprio*.so $(DESTDIR)$(libdir)
|
|
||||||
+ $(INSTALL_PROGRAM) -m 755 libprio*.so $(DESTDIR)$(plugindir)
|
|
||||||
|
|
||||||
uninstall:
|
|
||||||
- for file in $(LIBS); do $(RM) $(DESTDIR)$(libdir)/$$file; done
|
|
||||||
+ for file in $(LIBS); do $(RM) $(DESTDIR)$(plugindir)/$$file; done
|
|
||||||
|
|
||||||
clean: dep_clean
|
|
||||||
$(RM) core *.a *.o *.gz *.so
|
|
@ -43,10 +43,10 @@ index 8d15d2ea..eff690fd 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 1fea9d5a..eef3c605 100644
|
index b4dccd1b..284282c6 100644
|
||||||
--- a/multipath/multipath.conf.5
|
--- a/multipath/multipath.conf.5
|
||||||
+++ b/multipath/multipath.conf.5
|
+++ b/multipath/multipath.conf.5
|
||||||
@@ -1353,9 +1353,14 @@ keywords. Both are regular expressions. For a full description of these keywords
|
@@ -1367,9 +1367,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,
|
||||||
@ -62,7 +62,7 @@ index 1fea9d5a..eef3c605 100644
|
|||||||
.
|
.
|
||||||
.RS
|
.RS
|
||||||
.PP
|
.PP
|
||||||
@@ -1366,10 +1371,6 @@ Blacklisting by missing properties is only applied to devices which do have the
|
@@ -1380,10 +1385,6 @@ Blacklisting by missing properties is only applied to devices which do have the
|
||||||
property specified by \fIuid_attribute\fR (e.g. \fIID_SERIAL\fR)
|
property specified by \fIuid_attribute\fR (e.g. \fIID_SERIAL\fR)
|
||||||
set. Previously, it was applied to every device, possibly causing devices to be
|
set. Previously, it was applied to every device, possibly causing devices to be
|
||||||
blacklisted because of temporary I/O error conditions.
|
blacklisted because of temporary I/O error conditions.
|
@ -1,112 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Martin Wilck <mwilck@suse.com>
|
|
||||||
Date: Thu, 27 Oct 2022 17:35:48 +0200
|
|
||||||
Subject: [PATCH] multipath-tools: Makefile.inc: use simple make variables
|
|
||||||
consistently
|
|
||||||
|
|
||||||
"Simply expanded" make variables are generally preferred over "recursively
|
|
||||||
expanded" make variables, unless they reference other variables that are
|
|
||||||
defined over overwritten further down in the Makefile (see
|
|
||||||
https://www.gnu.org/software/make/manual/html_node/Flavors.html).
|
|
||||||
Using them makes the code easier to read and even somewhat faster.
|
|
||||||
|
|
||||||
We've been adding simply expanded variables over time, but most older
|
|
||||||
code still uses recursively expanded ones. Try to be consistent, at least
|
|
||||||
in Makefile.inc.
|
|
||||||
|
|
||||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
|
||||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
---
|
|
||||||
Makefile.inc | 50 +++++++++++++++++++++++++-------------------------
|
|
||||||
1 file changed, 25 insertions(+), 25 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/Makefile.inc b/Makefile.inc
|
|
||||||
index 17707a3e..86602e2a 100644
|
|
||||||
--- a/Makefile.inc
|
|
||||||
+++ b/Makefile.inc
|
|
||||||
@@ -32,11 +32,11 @@ SYSTEMD := $(strip $(or $(shell $(PKGCONFIG) --modversion libsystemd 2>/dev/null
|
|
||||||
$(shell systemctl --version 2>/dev/null | sed -n 's/systemd \([0-9]*\).*/\1/p')))
|
|
||||||
|
|
||||||
# Paths. All these can be overridden on the "make" command line.
|
|
||||||
-prefix =
|
|
||||||
+prefix :=
|
|
||||||
# Prefix for binaries
|
|
||||||
-exec_prefix = $(prefix)
|
|
||||||
+exec_prefix := $(prefix)
|
|
||||||
# Prefix for non-essential libraries (libdmmp)
|
|
||||||
-usr_prefix = $(prefix)
|
|
||||||
+usr_prefix := $(prefix)
|
|
||||||
# Where to install systemd-related files. systemd is usually installed under /usr
|
|
||||||
# Note: some systemd installations use separate "prefix" and "rootprefix".
|
|
||||||
# In this case, override only unitdir to use systemd's "rootprefix" instead of $(systemd_prefix)
|
|
||||||
@@ -46,13 +46,13 @@ tmpfilesdir := $(systemd_prefix)/lib/tmpfiles.d
|
|
||||||
modulesloaddir := $(systemd_prefix)/lib/modules-load.d
|
|
||||||
libudevdir := $(systemd_prefix)/lib/udev
|
|
||||||
udevrulesdir := $(libudevdir)/rules.d
|
|
||||||
-bindir = $(exec_prefix)/sbin
|
|
||||||
+bindir := $(exec_prefix)/sbin
|
|
||||||
mandir := $(usr_prefix)/share/man
|
|
||||||
LIB := $(if $(shell test -d /lib64 && echo 1),lib64,lib)
|
|
||||||
-syslibdir = $(prefix)/$(LIB)
|
|
||||||
-usrlibdir = $(usr_prefix)/$(LIB)
|
|
||||||
-includedir = $(usr_prefix)/include
|
|
||||||
-pkgconfdir = $(usrlibdir)/pkgconfig
|
|
||||||
+syslibdir := $(prefix)/$(LIB)
|
|
||||||
+usrlibdir := $(usr_prefix)/$(LIB)
|
|
||||||
+includedir := $(usr_prefix)/include
|
|
||||||
+pkgconfdir := $(usrlibdir)/pkgconfig
|
|
||||||
plugindir := $(prefix)/$(LIB)/multipath
|
|
||||||
configdir := $(prefix)/etc/multipath/conf.d
|
|
||||||
runtimedir := $(if $(shell test -L /var/run -o ! -d /var/run && echo 1),/run,/var/run)
|
|
||||||
@@ -60,10 +60,10 @@ devmapper_incdir := $(or $(shell $(PKGCONFIG) --variable=includedir devmapper),/
|
|
||||||
libudev_incdir := $(or $(shell $(PKGCONFIG) --variable=includedir libudev),/usr/include)
|
|
||||||
kernel_incdir := /usr/include
|
|
||||||
|
|
||||||
-GZIP_PROG = gzip -9 -c
|
|
||||||
-RM = rm -f
|
|
||||||
-LN = ln -sf
|
|
||||||
-INSTALL_PROGRAM = install
|
|
||||||
+GZIP_PROG := gzip -9 -c
|
|
||||||
+RM := rm -f
|
|
||||||
+LN := ln -sf
|
|
||||||
+INSTALL_PROGRAM := install
|
|
||||||
NV_VERSION_SCRIPT = $(VERSION_SCRIPT:%.version=%-nv.version)
|
|
||||||
|
|
||||||
# $(call TEST_CC_OPTION,option,fallback)
|
|
||||||
@@ -106,23 +106,23 @@ CPPFLAGS := $(FORTIFY_OPT) \
|
|
||||||
-DRUNTIME_DIR=\"$(runtimedir)\" \
|
|
||||||
-DCONFIG_DIR=\"$(configdir)\" -DEXTRAVERSION=\"$(EXTRAVERSION)\" -MMD -MP
|
|
||||||
CFLAGS := --std=gnu99 $(CFLAGS) $(OPTFLAGS) $(WARNFLAGS) -pipe
|
|
||||||
-BIN_CFLAGS = -fPIE -DPIE
|
|
||||||
-LIB_CFLAGS = -fPIC
|
|
||||||
-SHARED_FLAGS = -shared
|
|
||||||
+BIN_CFLAGS := -fPIE -DPIE
|
|
||||||
+LIB_CFLAGS := -fPIC
|
|
||||||
+SHARED_FLAGS := -shared
|
|
||||||
LDFLAGS := $(LDFLAGS) -Wl,-z,relro -Wl,-z,now -Wl,-z,defs
|
|
||||||
-BIN_LDFLAGS = -pie
|
|
||||||
+BIN_LDFLAGS := -pie
|
|
||||||
|
|
||||||
# Source code directories. Don't modify.
|
|
||||||
|
|
||||||
-multipathdir = $(TOPDIR)/libmultipath
|
|
||||||
-daemondir = $(TOPDIR)/multipathd
|
|
||||||
-mpathutildir = $(TOPDIR)/libmpathutil
|
|
||||||
-mpathpersistdir = $(TOPDIR)/libmpathpersist
|
|
||||||
-mpathcmddir = $(TOPDIR)/libmpathcmd
|
|
||||||
-mpathvaliddir = $(TOPDIR)/libmpathvalid
|
|
||||||
-thirdpartydir = $(TOPDIR)/third-party
|
|
||||||
-libdmmpdir = $(TOPDIR)/libdmmp
|
|
||||||
-nvmedir = $(TOPDIR)/libmultipath/nvme
|
|
||||||
+multipathdir := $(TOPDIR)/libmultipath
|
|
||||||
+daemondir := $(TOPDIR)/multipathd
|
|
||||||
+mpathutildir := $(TOPDIR)/libmpathutil
|
|
||||||
+mpathpersistdir := $(TOPDIR)/libmpathpersist
|
|
||||||
+mpathcmddir := $(TOPDIR)/libmpathcmd
|
|
||||||
+mpathvaliddir := $(TOPDIR)/libmpathvalid
|
|
||||||
+thirdpartydir := $(TOPDIR)/third-party
|
|
||||||
+libdmmpdir := $(TOPDIR)/libdmmp
|
|
||||||
+nvmedir := $(TOPDIR)/libmultipath/nvme
|
|
||||||
|
|
||||||
# Check whether a function with name $1 has been declared in header file $2.
|
|
||||||
check_func = $(shell \
|
|
@ -1,24 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Martin Wilck <mwilck@suse.com>
|
|
||||||
Date: Thu, 27 Oct 2022 17:40:30 +0200
|
|
||||||
Subject: [PATCH] multipath-tools: Makefile.inc: fix a log message
|
|
||||||
|
|
||||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
|
||||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
---
|
|
||||||
Makefile.inc | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/Makefile.inc b/Makefile.inc
|
|
||||||
index 86602e2a..77790ddf 100644
|
|
||||||
--- a/Makefile.inc
|
|
||||||
+++ b/Makefile.inc
|
|
||||||
@@ -159,7 +159,7 @@ check_var = $(shell \
|
|
||||||
found=0; \
|
|
||||||
status="no"; \
|
|
||||||
fi; \
|
|
||||||
- echo 1>&2 "Checking for .. $1 in $2 ... $$status"; \
|
|
||||||
+ echo 1>&2 "Checking for $1 in $2 ... $$status"; \
|
|
||||||
echo "$$found" \
|
|
||||||
)
|
|
||||||
|
|
@ -1,129 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Martin Wilck <mwilck@suse.com>
|
|
||||||
Date: Thu, 27 Oct 2022 16:40:27 +0200
|
|
||||||
Subject: [PATCH] multipath-tools: Makefile.inc: set systemd-specific flags
|
|
||||||
|
|
||||||
Define SYSTEMD_CPPFLAGS and SYSTEMD_LIBDEPS, and use them in Makefiles.
|
|
||||||
|
|
||||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
|
||||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
---
|
|
||||||
Makefile.inc | 3 +++
|
|
||||||
libmpathutil/Makefile | 13 ++-----------
|
|
||||||
libmultipath/Makefile | 14 +++-----------
|
|
||||||
multipathd/Makefile | 25 ++++++++-----------------
|
|
||||||
4 files changed, 16 insertions(+), 39 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/Makefile.inc b/Makefile.inc
|
|
||||||
index 77790ddf..2cf25745 100644
|
|
||||||
--- a/Makefile.inc
|
|
||||||
+++ b/Makefile.inc
|
|
||||||
@@ -97,6 +97,9 @@ ERROR_DISCARDED_QUALIFIERS := $(call TEST_CC_OPTION,-Werror=discarded-qualifiers
|
|
||||||
WNOCLOBBERED := $(call TEST_CC_OPTION,-Wno-clobbered -Wno-error=clobbered,)
|
|
||||||
WFORMATOVERFLOW := $(call TEST_CC_OPTION,-Wformat-overflow=2,)
|
|
||||||
|
|
||||||
+SYSTEMD_CPPFLAGS := $(if $(SYSTEMD),-DUSE_SYSTEMD=$(SYSTEMD))
|
|
||||||
+SYSTEMD_LIBDEPS := $(if $(SYSTEMD),$(if $(shell test $(SYSTEMD) -gt 209 && echo 1),-lsystemd,-lsystemd-daemon))
|
|
||||||
+
|
|
||||||
OPTFLAGS := -O2 -g $(STACKPROT) --param=ssp-buffer-size=4
|
|
||||||
WARNFLAGS := -Werror -Wall -Wextra -Wformat=2 $(WFORMATOVERFLOW) -Werror=implicit-int \
|
|
||||||
-Werror=implicit-function-declaration -Werror=format-security \
|
|
||||||
diff --git a/libmpathutil/Makefile b/libmpathutil/Makefile
|
|
||||||
index c913c761..4be75d2d 100644
|
|
||||||
--- a/libmpathutil/Makefile
|
|
||||||
+++ b/libmpathutil/Makefile
|
|
||||||
@@ -8,19 +8,10 @@ DEVLIB = libmpathutil.so
|
|
||||||
LIBS = $(DEVLIB).$(SONAME)
|
|
||||||
VERSION_SCRIPT := libmpathutil.version
|
|
||||||
|
|
||||||
-CPPFLAGS += -I. -I$(multipathdir) -I$(mpathcmddir)
|
|
||||||
+CPPFLAGS += -I. -I$(multipathdir) -I$(mpathcmddir) $(SYSTEMD_CPPFLAGS)
|
|
||||||
CFLAGS += $(LIB_CFLAGS) -D_GNU_SOURCE
|
|
||||||
|
|
||||||
-LIBDEPS += -lpthread -ldl -ludev -L$(mpathcmddir) -lmpathcmd
|
|
||||||
-
|
|
||||||
-ifdef SYSTEMD
|
|
||||||
- CPPFLAGS += -DUSE_SYSTEMD=$(SYSTEMD)
|
|
||||||
- ifeq ($(shell test $(SYSTEMD) -gt 209 && echo 1), 1)
|
|
||||||
- LIBDEPS += -lsystemd
|
|
||||||
- else
|
|
||||||
- LIBDEPS += -lsystemd-daemon
|
|
||||||
- endif
|
|
||||||
-endif
|
|
||||||
+LIBDEPS += -lpthread -ldl -ludev -L$(mpathcmddir) -lmpathcmd $(SYSTEMD_LIBDEPS)
|
|
||||||
|
|
||||||
# object files referencing MULTIPATH_DIR or CONFIG_DIR
|
|
||||||
# they need to be recompiled for unit tests
|
|
||||||
diff --git a/libmultipath/Makefile b/libmultipath/Makefile
|
|
||||||
index c7d4fc99..009f26a3 100644
|
|
||||||
--- a/libmultipath/Makefile
|
|
||||||
+++ b/libmultipath/Makefile
|
|
||||||
@@ -8,19 +8,11 @@ DEVLIB = libmultipath.so
|
|
||||||
LIBS = $(DEVLIB).$(SONAME)
|
|
||||||
VERSION_SCRIPT := libmultipath.version
|
|
||||||
|
|
||||||
-CPPFLAGS += -I$(mpathutildir) -I$(mpathcmddir) -I$(nvmedir) -D_GNU_SOURCE
|
|
||||||
+CPPFLAGS += -I$(mpathutildir) -I$(mpathcmddir) -I$(nvmedir) -D_GNU_SOURCE $(SYSTEMD_CPPFLAGS)
|
|
||||||
CFLAGS += $(LIB_CFLAGS)
|
|
||||||
|
|
||||||
-LIBDEPS += -lpthread -ldl -ldevmapper -ludev -L$(mpathutildir) -lmpathutil -L$(mpathcmddir) -lmpathcmd -lurcu -laio
|
|
||||||
-
|
|
||||||
-ifdef SYSTEMD
|
|
||||||
- CPPFLAGS += -DUSE_SYSTEMD=$(SYSTEMD)
|
|
||||||
- ifeq ($(shell test $(SYSTEMD) -gt 209 && echo 1), 1)
|
|
||||||
- LIBDEPS += -lsystemd
|
|
||||||
- else
|
|
||||||
- LIBDEPS += -lsystemd-daemon
|
|
||||||
- endif
|
|
||||||
-endif
|
|
||||||
+LIBDEPS += -lpthread -ldl -ldevmapper -ludev -L$(mpathutildir) -lmpathutil -L$(mpathcmddir) -lmpathcmd \
|
|
||||||
+ -lurcu -laio $(SYSTEMD_LIBDEPS)
|
|
||||||
|
|
||||||
ifneq ($(call check_func,dm_task_no_flush,$(devmapper_incdir)/libdevmapper.h),0)
|
|
||||||
CPPFLAGS += -DLIBDM_API_FLUSH
|
|
||||||
diff --git a/multipathd/Makefile b/multipathd/Makefile
|
|
||||||
index 78aefee0..cdda371b 100644
|
|
||||||
--- a/multipathd/Makefile
|
|
||||||
+++ b/multipathd/Makefile
|
|
||||||
@@ -18,14 +18,17 @@ endif
|
|
||||||
CPPFLAGS += -I$(multipathdir) -I$(mpathutildir) -I$(mpathpersistdir) -I$(mpathcmddir) -I$(thirdpartydir) \
|
|
||||||
$(shell $(PKGCONFIG) --modversion liburcu 2>/dev/null | \
|
|
||||||
awk -F. '{ printf("-DURCU_VERSION=0x%06x", 256 * ( 256 * $$1 + $$2) + $$3); }') \
|
|
||||||
- -DBINDIR='"$(bindir)"'
|
|
||||||
+ -DBINDIR='"$(bindir)"' $(SYSTEMD_CPPFLAGS)
|
|
||||||
+ifeq ($(ENABLE_DMEVENTS_POLL),0)
|
|
||||||
+ CPPFLAGS += -DNO_DMEVENTS_POLL
|
|
||||||
+endif
|
|
||||||
CFLAGS += $(BIN_CFLAGS)
|
|
||||||
LDFLAGS += $(BIN_LDFLAGS)
|
|
||||||
|
|
||||||
-CLI_LIBDEPS := -L$(mpathutildir) -lmpathutil -L$(mpathcmddir) -lmpathcmd -ludev -ldl -lurcu -lpthread
|
|
||||||
-LIBDEPS += -L$(multipathdir) -lmultipath -L$(mpathpersistdir) -lmpathpersist \
|
|
||||||
- -ldevmapper $(CLI_LIBDEPS)
|
|
||||||
-
|
|
||||||
+CLI_LIBDEPS := -L$(mpathutildir) -lmpathutil -L$(mpathcmddir) -lmpathcmd \
|
|
||||||
+ -ludev -ldl -lurcu -lpthread $(SYSTEMD_LIBDEPS)
|
|
||||||
+LIBDEPS := -L$(multipathdir) -lmultipath -L$(mpathpersistdir) -lmpathpersist \
|
|
||||||
+ -ldevmapper $(CLI_LIBDEPS)
|
|
||||||
|
|
||||||
ifeq ($(READLINE),libedit)
|
|
||||||
RL_CPPFLAGS = -DUSE_LIBEDIT
|
|
||||||
@@ -40,18 +43,6 @@ RL_CPPFLAGS += -DBROKEN_RL_COMPLETION_FUNC
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
-ifdef SYSTEMD
|
|
||||||
- CPPFLAGS += -DUSE_SYSTEMD=$(SYSTEMD)
|
|
||||||
- ifeq ($(shell test $(SYSTEMD) -gt 209 && echo 1), 1)
|
|
||||||
- CLI_LIBDEPS += -lsystemd
|
|
||||||
- else
|
|
||||||
- CLI_LIBDEPS += -lsystemd-daemon
|
|
||||||
- endif
|
|
||||||
-endif
|
|
||||||
-ifeq ($(ENABLE_DMEVENTS_POLL),0)
|
|
||||||
- CPPFLAGS += -DNO_DMEVENTS_POLL
|
|
||||||
-endif
|
|
||||||
-
|
|
||||||
OBJS = main.o pidfile.o uxlsnr.o uxclnt.o cli.o cli_handlers.o waiter.o \
|
|
||||||
dmevents.o init_unwinder.o
|
|
||||||
|
|
@ -9,14 +9,14 @@ still being generic.
|
|||||||
|
|
||||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
---
|
---
|
||||||
Makefile.inc | 24 ++++++++++++++++++------
|
Makefile.inc | 22 +++++++++++++++++-----
|
||||||
1 file changed, 18 insertions(+), 6 deletions(-)
|
1 file changed, 17 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
diff --git a/Makefile.inc b/Makefile.inc
|
diff --git a/Makefile.inc b/Makefile.inc
|
||||||
index 8c5a08a2..e6e7f7d7 100644
|
index 540e1dfc..748911e2 100644
|
||||||
--- a/Makefile.inc
|
--- a/Makefile.inc
|
||||||
+++ b/Makefile.inc
|
+++ b/Makefile.inc
|
||||||
@@ -74,19 +74,31 @@ INSTALL_PROGRAM := install
|
@@ -78,11 +78,23 @@ ORIG_LDFLAGS := $(LDFLAGS)
|
||||||
SYSTEMD_CPPFLAGS := $(if $(SYSTEMD),-DUSE_SYSTEMD=$(SYSTEMD))
|
SYSTEMD_CPPFLAGS := $(if $(SYSTEMD),-DUSE_SYSTEMD=$(SYSTEMD))
|
||||||
SYSTEMD_LIBDEPS := $(if $(SYSTEMD),$(if $(shell test $(SYSTEMD) -gt 209 && echo 1),-lsystemd,-lsystemd-daemon))
|
SYSTEMD_LIBDEPS := $(if $(SYSTEMD),$(if $(shell test $(SYSTEMD) -gt 209 && echo 1),-lsystemd,-lsystemd-daemon))
|
||||||
|
|
||||||
@ -37,15 +37,14 @@ index 8c5a08a2..e6e7f7d7 100644
|
|||||||
+endif
|
+endif
|
||||||
+WARNFLAGS := -Werror -Wextra -Wformat=2 $(WFORMATOVERFLOW) -Werror=implicit-int \
|
+WARNFLAGS := -Werror -Wextra -Wformat=2 $(WFORMATOVERFLOW) -Werror=implicit-int \
|
||||||
-Werror=implicit-function-declaration -Werror=format-security \
|
-Werror=implicit-function-declaration -Werror=format-security \
|
||||||
- $(WNOCLOBBERED) -Werror=cast-qual $(ERROR_DISCARDED_QUALIFIERS)
|
- $(WNOCLOBBERED) -Werror=cast-qual $(ERROR_DISCARDED_QUALIFIERS) $(W_URCU_TYPE_LIMITS)
|
||||||
-CPPFLAGS := $(FORTIFY_OPT) \
|
-CPPFLAGS := $(FORTIFY_OPT) $(CPPFLAGS) \
|
||||||
- -DBIN_DIR=\"$(bindir)\" -DMULTIPATH_DIR=\"$(plugindir)\" \
|
+ $(WNOCLOBBERED) -Werror=cast-qual $(ERROR_DISCARDED_QUALIFIERS) $(W_URCU_TYPE_LIMITS) -Wstrict-prototypes
|
||||||
+ $(WNOCLOBBERED) -Werror=cast-qual \
|
+CPPFLAGS := $(CPPFLAGS) \
|
||||||
+ $(ERROR_DISCARDED_QUALIFIERS) -Wstrict-prototypes
|
-DBIN_DIR=\"$(bindir)\" -DMULTIPATH_DIR=\"$(plugindir)\" \
|
||||||
+CPPFLAGS := -DBIN_DIR=\"$(bindir)\" -DMULTIPATH_DIR=\"$(plugindir)\" \
|
|
||||||
-DRUNTIME_DIR=\"$(runtimedir)\" \
|
-DRUNTIME_DIR=\"$(runtimedir)\" \
|
||||||
-DCONFIG_DIR=\"$(configdir)\" -DEXTRAVERSION=\"$(EXTRAVERSION)\" -MMD -MP
|
-DCONFIG_DIR=\"$(configdir)\" -DEXTRAVERSION=\"$(EXTRAVERSION)\" -MMD -MP
|
||||||
CFLAGS := --std=gnu99 $(CFLAGS) $(OPTFLAGS) $(WARNFLAGS) -pipe
|
@@ -90,7 +102,7 @@ CFLAGS := --std=gnu99 $(CFLAGS) $(OPTFLAGS) $(WARNFLAGS) -pipe
|
||||||
BIN_CFLAGS := -fPIE -DPIE
|
BIN_CFLAGS := -fPIE -DPIE
|
||||||
LIB_CFLAGS := -fPIC
|
LIB_CFLAGS := -fPIC
|
||||||
SHARED_FLAGS := -shared
|
SHARED_FLAGS := -shared
|
@ -1,54 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Martin Wilck <mwilck@suse.com>
|
|
||||||
Date: Thu, 27 Oct 2022 18:51:52 +0200
|
|
||||||
Subject: [PATCH] multipathd: Makefile: fix compilation flags for libedit
|
|
||||||
|
|
||||||
The workaround for the wrong prototype in older libedit versions
|
|
||||||
had ended up in the code for libreadline. Fix it, and use simple
|
|
||||||
make variables.
|
|
||||||
|
|
||||||
Fixes: 2bd80f6 ("multipathd: fix incompatible pointer type error with libedit")
|
|
||||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
|
||||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
---
|
|
||||||
multipathd/Makefile | 16 +++++++---------
|
|
||||||
1 file changed, 7 insertions(+), 9 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/multipathd/Makefile b/multipathd/Makefile
|
|
||||||
index cdda371b..7221b6af 100644
|
|
||||||
--- a/multipathd/Makefile
|
|
||||||
+++ b/multipathd/Makefile
|
|
||||||
@@ -31,17 +31,17 @@ LIBDEPS := -L$(multipathdir) -lmultipath -L$(mpathpersistdir) -lmpathpersist \
|
|
||||||
-ldevmapper $(CLI_LIBDEPS)
|
|
||||||
|
|
||||||
ifeq ($(READLINE),libedit)
|
|
||||||
-RL_CPPFLAGS = -DUSE_LIBEDIT
|
|
||||||
-RL_LIBDEPS += -ledit
|
|
||||||
-endif
|
|
||||||
-ifeq ($(READLINE),libreadline)
|
|
||||||
-RL_CPPFLAGS += -DUSE_LIBREADLINE
|
|
||||||
-RL_LIBDEPS += -lreadline
|
|
||||||
-# See comment in uxclnt.c
|
|
||||||
+RL_CPPFLAGS := -DUSE_LIBEDIT
|
|
||||||
+RL_LIBDEPS := -ledit
|
|
||||||
+# See comment in multipathc.c
|
|
||||||
ifeq ($(shell sed -En 's/.*\<Function\s*\*rl_completion_entry_function;.*/yes/p' /usr/include/editline/readline.h),yes)
|
|
||||||
RL_CPPFLAGS += -DBROKEN_RL_COMPLETION_FUNC
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
+ifeq ($(READLINE),libreadline)
|
|
||||||
+RL_CPPFLAGS := -DUSE_LIBREADLINE
|
|
||||||
+RL_LIBDEPS := -lreadline
|
|
||||||
+endif
|
|
||||||
|
|
||||||
OBJS = main.o pidfile.o uxlsnr.o uxclnt.o cli.o cli_handlers.o waiter.o \
|
|
||||||
dmevents.o init_unwinder.o
|
|
||||||
@@ -52,8 +52,6 @@ ifeq ($(FPIN_SUPPORT),1)
|
|
||||||
OBJS += fpin_handlers.o
|
|
||||||
endif
|
|
||||||
|
|
||||||
-
|
|
||||||
-
|
|
||||||
EXEC = multipathd
|
|
||||||
CLI = multipathc
|
|
||||||
|
|
@ -1,136 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Martin Wilck <mwilck@suse.com>
|
|
||||||
Date: Thu, 27 Oct 2022 21:59:36 +0200
|
|
||||||
Subject: [PATCH] multipath-tools Makefiles: clean up executable Makefiles
|
|
||||||
|
|
||||||
Move the EXEC definition to the top, and use simple make variables
|
|
||||||
where possible.
|
|
||||||
|
|
||||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
|
||||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
---
|
|
||||||
kpartx/Makefile | 15 +++++++--------
|
|
||||||
multipath/Makefile | 6 +++---
|
|
||||||
multipathd/Makefile | 30 ++++++++++++++----------------
|
|
||||||
3 files changed, 24 insertions(+), 27 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/kpartx/Makefile b/kpartx/Makefile
|
|
||||||
index 464925ad..7ceae96b 100644
|
|
||||||
--- a/kpartx/Makefile
|
|
||||||
+++ b/kpartx/Makefile
|
|
||||||
@@ -3,20 +3,19 @@
|
|
||||||
#
|
|
||||||
include ../Makefile.inc
|
|
||||||
|
|
||||||
-CPPFLAGS += -I. -I$(multipathdir) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
|
|
||||||
-CFLAGS += $(BIN_CFLAGS)
|
|
||||||
-LDFLAGS += $(BIN_LDFLAGS)
|
|
||||||
-
|
|
||||||
-LIBDEPS += -ldevmapper
|
|
||||||
+EXEC := kpartx
|
|
||||||
|
|
||||||
+CPPFLAGS += -I. -I$(multipathdir) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
|
|
||||||
ifneq ($(call check_func,dm_task_set_cookie,$(devmapper_incdir)/libdevmapper.h),0)
|
|
||||||
CPPFLAGS += -DLIBDM_API_COOKIE
|
|
||||||
endif
|
|
||||||
|
|
||||||
-OBJS = bsd.o dos.o kpartx.o solaris.o unixware.o dasd.o sun.o \
|
|
||||||
- gpt.o mac.o ps3.o crc32.o lopart.o xstrncpy.o devmapper.o
|
|
||||||
+CFLAGS += $(BIN_CFLAGS)
|
|
||||||
+LDFLAGS += $(BIN_LDFLAGS)
|
|
||||||
+LIBDEPS += -ldevmapper
|
|
||||||
|
|
||||||
-EXEC = kpartx
|
|
||||||
+OBJS := bsd.o dos.o kpartx.o solaris.o unixware.o dasd.o sun.o \
|
|
||||||
+ gpt.o mac.o ps3.o crc32.o lopart.o xstrncpy.o devmapper.o
|
|
||||||
|
|
||||||
all: $(EXEC)
|
|
||||||
|
|
||||||
diff --git a/multipath/Makefile b/multipath/Makefile
|
|
||||||
index 1c4e7a52..7f7b341d 100644
|
|
||||||
--- a/multipath/Makefile
|
|
||||||
+++ b/multipath/Makefile
|
|
||||||
@@ -3,15 +3,15 @@
|
|
||||||
#
|
|
||||||
include ../Makefile.inc
|
|
||||||
|
|
||||||
+EXEC := multipath
|
|
||||||
+
|
|
||||||
CPPFLAGS += -I$(multipathdir) -I$(mpathutildir) -I$(mpathcmddir)
|
|
||||||
CFLAGS += $(BIN_CFLAGS)
|
|
||||||
LDFLAGS += $(BIN_LDFLAGS)
|
|
||||||
LIBDEPS += -L$(multipathdir) -lmultipath -L$(mpathutildir) -lmpathutil \
|
|
||||||
-L$(mpathcmddir) -lmpathcmd -lpthread -ldevmapper -ldl -ludev
|
|
||||||
|
|
||||||
-EXEC = multipath
|
|
||||||
-
|
|
||||||
-OBJS = main.o
|
|
||||||
+OBJS := main.o
|
|
||||||
|
|
||||||
all: $(EXEC) multipath.rules tmpfiles.conf
|
|
||||||
|
|
||||||
diff --git a/multipathd/Makefile b/multipathd/Makefile
|
|
||||||
index 7221b6af..bb8f7770 100644
|
|
||||||
--- a/multipathd/Makefile
|
|
||||||
+++ b/multipathd/Makefile
|
|
||||||
@@ -1,27 +1,30 @@
|
|
||||||
include ../Makefile.inc
|
|
||||||
|
|
||||||
+EXEC := multipathd
|
|
||||||
+CLI := multipathc
|
|
||||||
+
|
|
||||||
+CPPFLAGS += -I$(multipathdir) -I$(mpathutildir) -I$(mpathpersistdir) -I$(mpathcmddir) -I$(thirdpartydir) \
|
|
||||||
+ $(shell $(PKGCONFIG) --modversion liburcu 2>/dev/null | \
|
|
||||||
+ awk -F. '{ printf("-DURCU_VERSION=0x%06x", 256 * ( 256 * $$1 + $$2) + $$3); }') \
|
|
||||||
+ -DBINDIR='"$(bindir)"' $(SYSTEMD_CPPFLAGS)
|
|
||||||
+
|
|
||||||
+ifeq ($(ENABLE_DMEVENTS_POLL),0)
|
|
||||||
+ CPPFLAGS += -DNO_DMEVENTS_POLL
|
|
||||||
+endif
|
|
||||||
ifneq ($(call check_func,dm_task_get_errno,$(devmapper_incdir)/libdevmapper.h),0)
|
|
||||||
CPPFLAGS += -DLIBDM_API_GET_ERRNO
|
|
||||||
endif
|
|
||||||
-
|
|
||||||
ifneq ($(call check_var,ELS_DTAG_LNK_INTEGRITY,$(kernel_incdir)/scsi/fc/fc_els.h),0)
|
|
||||||
CPPFLAGS += -DFPIN_EVENT_HANDLER
|
|
||||||
FPIN_SUPPORT = 1
|
|
||||||
endif
|
|
||||||
+
|
|
||||||
#
|
|
||||||
# debugging stuff
|
|
||||||
#
|
|
||||||
#CPPFLAGS += -DLCKDBG
|
|
||||||
-#CPPFLAGS += -D_DEBUG_
|
|
||||||
#CPPFLAGS += -DLOGDBG
|
|
||||||
|
|
||||||
-CPPFLAGS += -I$(multipathdir) -I$(mpathutildir) -I$(mpathpersistdir) -I$(mpathcmddir) -I$(thirdpartydir) \
|
|
||||||
- $(shell $(PKGCONFIG) --modversion liburcu 2>/dev/null | \
|
|
||||||
- awk -F. '{ printf("-DURCU_VERSION=0x%06x", 256 * ( 256 * $$1 + $$2) + $$3); }') \
|
|
||||||
- -DBINDIR='"$(bindir)"' $(SYSTEMD_CPPFLAGS)
|
|
||||||
-ifeq ($(ENABLE_DMEVENTS_POLL),0)
|
|
||||||
- CPPFLAGS += -DNO_DMEVENTS_POLL
|
|
||||||
-endif
|
|
||||||
CFLAGS += $(BIN_CFLAGS)
|
|
||||||
LDFLAGS += $(BIN_LDFLAGS)
|
|
||||||
|
|
||||||
@@ -43,18 +46,13 @@ RL_CPPFLAGS := -DUSE_LIBREADLINE
|
|
||||||
RL_LIBDEPS := -lreadline
|
|
||||||
endif
|
|
||||||
|
|
||||||
-OBJS = main.o pidfile.o uxlsnr.o uxclnt.o cli.o cli_handlers.o waiter.o \
|
|
||||||
+CLI_OBJS := multipathc.o cli.o
|
|
||||||
+OBJS := main.o pidfile.o uxlsnr.o uxclnt.o cli.o cli_handlers.o waiter.o \
|
|
||||||
dmevents.o init_unwinder.o
|
|
||||||
-
|
|
||||||
-CLI_OBJS = multipathc.o cli.o
|
|
||||||
-
|
|
||||||
ifeq ($(FPIN_SUPPORT),1)
|
|
||||||
OBJS += fpin_handlers.o
|
|
||||||
endif
|
|
||||||
|
|
||||||
-EXEC = multipathd
|
|
||||||
-CLI = multipathc
|
|
||||||
-
|
|
||||||
all : $(EXEC) $(CLI)
|
|
||||||
|
|
||||||
$(EXEC): $(OBJS) $(multipathdir)/libmultipath.so $(mpathcmddir)/libmpathcmd.so
|
|
@ -1,261 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Martin Wilck <mwilck@suse.com>
|
|
||||||
Date: Thu, 27 Oct 2022 21:52:06 +0200
|
|
||||||
Subject: [PATCH] multipath-tools: Makefiles: use common code for libraries
|
|
||||||
|
|
||||||
Move shared code to Makefile.inc as far as possible. Use simple
|
|
||||||
make variables where possible.
|
|
||||||
|
|
||||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
|
||||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
---
|
|
||||||
Makefile.inc | 15 ++++++++++++++-
|
|
||||||
libdmmp/Makefile | 17 ++++++++---------
|
|
||||||
libmpathcmd/Makefile | 14 ++------------
|
|
||||||
libmpathpersist/Makefile | 14 ++------------
|
|
||||||
libmpathutil/Makefile | 14 +-------------
|
|
||||||
libmpathvalid/Makefile | 14 ++------------
|
|
||||||
libmultipath/Makefile | 12 +-----------
|
|
||||||
7 files changed, 30 insertions(+), 70 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/Makefile.inc b/Makefile.inc
|
|
||||||
index 2cf25745..fe6bc088 100644
|
|
||||||
--- a/Makefile.inc
|
|
||||||
+++ b/Makefile.inc
|
|
||||||
@@ -64,7 +64,6 @@ GZIP_PROG := gzip -9 -c
|
|
||||||
RM := rm -f
|
|
||||||
LN := ln -sf
|
|
||||||
INSTALL_PROGRAM := install
|
|
||||||
-NV_VERSION_SCRIPT = $(VERSION_SCRIPT:%.version=%-nv.version)
|
|
||||||
|
|
||||||
# $(call TEST_CC_OPTION,option,fallback)
|
|
||||||
# Test if the C compiler supports the option.
|
|
||||||
@@ -127,6 +126,13 @@ thirdpartydir := $(TOPDIR)/third-party
|
|
||||||
libdmmpdir := $(TOPDIR)/libdmmp
|
|
||||||
nvmedir := $(TOPDIR)/libmultipath/nvme
|
|
||||||
|
|
||||||
+# Common code for libraries - library Makefiles just set DEVLIB
|
|
||||||
+# SONAME defaults to 0 (we use version scripts)
|
|
||||||
+SONAME := 0
|
|
||||||
+LIBS = $(DEVLIB).$(SONAME)
|
|
||||||
+VERSION_SCRIPT = $(DEVLIB:%.so=%.version)
|
|
||||||
+NV_VERSION_SCRIPT = $(DEVLIB:%.so=%-nv.version)
|
|
||||||
+
|
|
||||||
# Check whether a function with name $1 has been declared in header file $2.
|
|
||||||
check_func = $(shell \
|
|
||||||
if grep -Eq "^[^[:blank:]]+[[:blank:]]+$1[[:blank:]]*(.*)*" "$2"; then \
|
|
||||||
@@ -175,3 +181,10 @@ check_var = $(shell \
|
|
||||||
|
|
||||||
%.abi: %.so
|
|
||||||
abidw $< >$@
|
|
||||||
+
|
|
||||||
+%-nv.version: %.version
|
|
||||||
+ @echo creating $@ from $<
|
|
||||||
+ @printf 'NOVERSION {\nglobal:\n' >$@
|
|
||||||
+ @grep -P '^[ \t]+[a-zA-Z_][a-zA-Z0-9_]*;' $< >>$@
|
|
||||||
+ @printf 'local:\n\t*;\n};\n' >>$@
|
|
||||||
+
|
|
||||||
diff --git a/libdmmp/Makefile b/libdmmp/Makefile
|
|
||||||
index 985b694b..67b6f86f 100644
|
|
||||||
--- a/libdmmp/Makefile
|
|
||||||
+++ b/libdmmp/Makefile
|
|
||||||
@@ -5,15 +5,14 @@
|
|
||||||
#
|
|
||||||
include ../Makefile.inc
|
|
||||||
|
|
||||||
-LIBDMMP_VERSION=0.2.0
|
|
||||||
-SONAME=$(LIBDMMP_VERSION)
|
|
||||||
-DEVLIB = libdmmp.so
|
|
||||||
-LIBS = $(DEVLIB).$(SONAME)
|
|
||||||
-PKGFILE = libdmmp.pc
|
|
||||||
-EXTRA_MAN_FILES = libdmmp.h.3
|
|
||||||
-HEADERS = libdmmp/libdmmp.h
|
|
||||||
-
|
|
||||||
-OBJS = libdmmp.o libdmmp_mp.o libdmmp_pg.o libdmmp_path.o libdmmp_misc.o
|
|
||||||
+LIBDMMP_VERSION := 0.2.0
|
|
||||||
+SONAME := $(LIBDMMP_VERSION)
|
|
||||||
+DEVLIB := libdmmp.so
|
|
||||||
+PKGFILE := libdmmp.pc
|
|
||||||
+EXTRA_MAN_FILES := libdmmp.h.3
|
|
||||||
+HEADERS := libdmmp/libdmmp.h
|
|
||||||
+
|
|
||||||
+OBJS := libdmmp.o libdmmp_mp.o libdmmp_pg.o libdmmp_path.o libdmmp_misc.o
|
|
||||||
|
|
||||||
CPPFLAGS += -I$(libdmmpdir) -I$(mpathcmddir) $(shell $(PKGCONFIG) --cflags json-c)
|
|
||||||
CFLAGS += $(LIB_CFLAGS) -fvisibility=hidden
|
|
||||||
diff --git a/libmpathcmd/Makefile b/libmpathcmd/Makefile
|
|
||||||
index 0f83fe7b..f705c7f0 100644
|
|
||||||
--- a/libmpathcmd/Makefile
|
|
||||||
+++ b/libmpathcmd/Makefile
|
|
||||||
@@ -1,13 +1,8 @@
|
|
||||||
include ../Makefile.inc
|
|
||||||
|
|
||||||
-SONAME = 0
|
|
||||||
-DEVLIB = libmpathcmd.so
|
|
||||||
-LIBS = $(DEVLIB).$(SONAME)
|
|
||||||
-VERSION_SCRIPT := libmpathcmd.version
|
|
||||||
-
|
|
||||||
+DEVLIB := libmpathcmd.so
|
|
||||||
CFLAGS += $(LIB_CFLAGS)
|
|
||||||
-
|
|
||||||
-OBJS = mpath_cmd.o
|
|
||||||
+OBJS := mpath_cmd.o
|
|
||||||
|
|
||||||
all: $(DEVLIB)
|
|
||||||
|
|
||||||
@@ -15,11 +10,6 @@ $(LIBS): $(OBJS) $(VERSION_SCRIPT)
|
|
||||||
$(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ \
|
|
||||||
-Wl,--version-script=$(VERSION_SCRIPT) -o $@ $(OBJS) $(LIBDEPS)
|
|
||||||
|
|
||||||
-$(NV_VERSION_SCRIPT): $(VERSION_SCRIPT)
|
|
||||||
- @printf 'NOVERSION {\nglobal:\n' >$@
|
|
||||||
- @grep -P '^[ \t]+[a-zA-Z_][a-zA-Z0-9_]*;' $< >>$@
|
|
||||||
- @printf 'local:\n\t*;\n};\n' >>$@
|
|
||||||
-
|
|
||||||
$(LIBS:%.so.$(SONAME)=%-nv.so): $(OBJS) $(NV_VERSION_SCRIPT)
|
|
||||||
$(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ \
|
|
||||||
-Wl,--version-script=$(NV_VERSION_SCRIPT) -o $@ $(OBJS) $(LIBDEPS)
|
|
||||||
diff --git a/libmpathpersist/Makefile b/libmpathpersist/Makefile
|
|
||||||
index 479524d4..6f69168f 100644
|
|
||||||
--- a/libmpathpersist/Makefile
|
|
||||||
+++ b/libmpathpersist/Makefile
|
|
||||||
@@ -1,16 +1,11 @@
|
|
||||||
include ../Makefile.inc
|
|
||||||
|
|
||||||
-SONAME = 0
|
|
||||||
-DEVLIB = libmpathpersist.so
|
|
||||||
-LIBS = $(DEVLIB).$(SONAME)
|
|
||||||
-VERSION_SCRIPT:= libmpathpersist.version
|
|
||||||
-
|
|
||||||
+DEVLIB := libmpathpersist.so
|
|
||||||
CFLAGS += $(LIB_CFLAGS) -I$(multipathdir) -I$(mpathutildir) -I$(mpathpersistdir) -I$(mpathcmddir)
|
|
||||||
LDFLAGS += -L$(multipathdir) -L$(mpathutildir) -L$(mpathcmddir)
|
|
||||||
-
|
|
||||||
LIBDEPS += -lmultipath -lmpathutil -lmpathcmd -ldevmapper -lpthread -ldl
|
|
||||||
|
|
||||||
-OBJS = mpath_persist.o mpath_updatepr.o mpath_pr_ioctl.o mpath_persist_int.o
|
|
||||||
+OBJS := mpath_persist.o mpath_updatepr.o mpath_pr_ioctl.o mpath_persist_int.o
|
|
||||||
|
|
||||||
all: $(DEVLIB)
|
|
||||||
|
|
||||||
@@ -18,11 +13,6 @@ $(LIBS): $(OBJS) $(VERSION_SCRIPT)
|
|
||||||
$(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ \
|
|
||||||
-Wl,--version-script=$(VERSION_SCRIPT) -o $@ $(OBJS) $(LIBDEPS)
|
|
||||||
|
|
||||||
-$(NV_VERSION_SCRIPT): $(VERSION_SCRIPT)
|
|
||||||
- @printf 'NOVERSION {\nglobal:\n' >$@
|
|
||||||
- @grep -P '^[ \t]+[a-zA-Z_][a-zA-Z0-9_]*;' $< >>$@
|
|
||||||
- @printf 'local:\n\t*;\n};\n' >>$@
|
|
||||||
-
|
|
||||||
$(LIBS:%.so.$(SONAME)=%-nv.so): $(OBJS) $(NV_VERSION_SCRIPT)
|
|
||||||
$(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ \
|
|
||||||
-Wl,--version-script=$(NV_VERSION_SCRIPT) -o $@ $(OBJS) $(LIBDEPS)
|
|
||||||
diff --git a/libmpathutil/Makefile b/libmpathutil/Makefile
|
|
||||||
index 4be75d2d..5665af28 100644
|
|
||||||
--- a/libmpathutil/Makefile
|
|
||||||
+++ b/libmpathutil/Makefile
|
|
||||||
@@ -3,14 +3,9 @@
|
|
||||||
#
|
|
||||||
include ../Makefile.inc
|
|
||||||
|
|
||||||
-SONAME = 0
|
|
||||||
-DEVLIB = libmpathutil.so
|
|
||||||
-LIBS = $(DEVLIB).$(SONAME)
|
|
||||||
-VERSION_SCRIPT := libmpathutil.version
|
|
||||||
-
|
|
||||||
+DEVLIB := libmpathutil.so
|
|
||||||
CPPFLAGS += -I. -I$(multipathdir) -I$(mpathcmddir) $(SYSTEMD_CPPFLAGS)
|
|
||||||
CFLAGS += $(LIB_CFLAGS) -D_GNU_SOURCE
|
|
||||||
-
|
|
||||||
LIBDEPS += -lpthread -ldl -ludev -L$(mpathcmddir) -lmpathcmd $(SYSTEMD_LIBDEPS)
|
|
||||||
|
|
||||||
# object files referencing MULTIPATH_DIR or CONFIG_DIR
|
|
||||||
@@ -22,8 +17,6 @@ OBJS := parser.o vector.o util.o debug.o time-util.o \
|
|
||||||
|
|
||||||
all: $(DEVLIB)
|
|
||||||
|
|
||||||
-make_static = $(shell sed '/^static/!s/^\([a-z]\{1,\} \)/static \1/' <$1 >$2)
|
|
||||||
-
|
|
||||||
$(LIBS): $(OBJS) $(VERSION_SCRIPT)
|
|
||||||
$(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ \
|
|
||||||
-Wl,--version-script=$(VERSION_SCRIPT) -o $@ $(OBJS) $(LIBDEPS)
|
|
||||||
@@ -31,11 +24,6 @@ $(LIBS): $(OBJS) $(VERSION_SCRIPT)
|
|
||||||
$(DEVLIB): $(LIBS)
|
|
||||||
$(LN) $(LIBS) $@
|
|
||||||
|
|
||||||
-$(NV_VERSION_SCRIPT): $(VERSION_SCRIPT)
|
|
||||||
- @printf 'NOVERSION {\nglobal:\n' >$@
|
|
||||||
- @grep -P '^[ \t]+[a-zA-Z_][a-zA-Z0-9_]*;' $< >>$@
|
|
||||||
- @printf 'local:\n\t*;\n};\n' >>$@
|
|
||||||
-
|
|
||||||
$(LIBS:%.so.$(SONAME)=%-nv.so): $(OBJS) $(NV_VERSION_SCRIPT)
|
|
||||||
$(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ \
|
|
||||||
-Wl,--version-script=$(NV_VERSION_SCRIPT) -o $@ $(OBJS) $(LIBDEPS)
|
|
||||||
diff --git a/libmpathvalid/Makefile b/libmpathvalid/Makefile
|
|
||||||
index 5dbfb923..bd4ccc0d 100644
|
|
||||||
--- a/libmpathvalid/Makefile
|
|
||||||
+++ b/libmpathvalid/Makefile
|
|
||||||
@@ -1,17 +1,12 @@
|
|
||||||
include ../Makefile.inc
|
|
||||||
|
|
||||||
-SONAME = 0
|
|
||||||
-DEVLIB = libmpathvalid.so
|
|
||||||
-LIBS = $(DEVLIB).$(SONAME)
|
|
||||||
-VERSION_SCRIPT := libmpathvalid.version
|
|
||||||
-
|
|
||||||
+DEVLIB := libmpathvalid.so
|
|
||||||
CPPFLAGS += -I$(multipathdir) -I$(mpathutildir) -I$(mpathcmddir)
|
|
||||||
CFLAGS += $(LIB_CFLAGS)
|
|
||||||
-
|
|
||||||
LIBDEPS += -lpthread -ldevmapper -ldl -L$(multipathdir) -lmultipath \
|
|
||||||
-L$(mpathutildir) -lmpathutil -L$(mpathcmddir) -lmpathcmd -ludev
|
|
||||||
|
|
||||||
-OBJS = mpath_valid.o
|
|
||||||
+OBJS := mpath_valid.o
|
|
||||||
|
|
||||||
all: $(LIBS)
|
|
||||||
|
|
||||||
@@ -20,11 +15,6 @@ $(LIBS): $(OBJS) $(VERSION_SCRIPT)
|
|
||||||
-Wl,--version-script=$(VERSION_SCRIPT)
|
|
||||||
$(LN) $(LIBS) $(DEVLIB)
|
|
||||||
|
|
||||||
-$(NV_VERSION_SCRIPT): $(VERSION_SCRIPT)
|
|
||||||
- @printf 'NOVERSION {\nglobal:\n' >$@
|
|
||||||
- @grep -P '^[ \t]+[a-zA-Z_][a-zA-Z0-9_]*;' $< >>$@
|
|
||||||
- @printf 'local:\n\t*;\n};\n' >>$@
|
|
||||||
-
|
|
||||||
$(LIBS:%.so.$(SONAME)=%-nv.so): $(OBJS) $(NV_VERSION_SCRIPT)
|
|
||||||
$(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ \
|
|
||||||
-Wl,--version-script=$(NV_VERSION_SCRIPT) -o $@ $(OBJS) $(LIBDEPS)
|
|
||||||
diff --git a/libmultipath/Makefile b/libmultipath/Makefile
|
|
||||||
index 009f26a3..9dc229ae 100644
|
|
||||||
--- a/libmultipath/Makefile
|
|
||||||
+++ b/libmultipath/Makefile
|
|
||||||
@@ -3,14 +3,9 @@
|
|
||||||
#
|
|
||||||
include ../Makefile.inc
|
|
||||||
|
|
||||||
-SONAME = 0
|
|
||||||
-DEVLIB = libmultipath.so
|
|
||||||
-LIBS = $(DEVLIB).$(SONAME)
|
|
||||||
-VERSION_SCRIPT := libmultipath.version
|
|
||||||
-
|
|
||||||
+DEVLIB := libmultipath.so
|
|
||||||
CPPFLAGS += -I$(mpathutildir) -I$(mpathcmddir) -I$(nvmedir) -D_GNU_SOURCE $(SYSTEMD_CPPFLAGS)
|
|
||||||
CFLAGS += $(LIB_CFLAGS)
|
|
||||||
-
|
|
||||||
LIBDEPS += -lpthread -ldl -ldevmapper -ludev -L$(mpathutildir) -lmpathutil -L$(mpathcmddir) -lmpathcmd \
|
|
||||||
-lurcu -laio $(SYSTEMD_LIBDEPS)
|
|
||||||
|
|
||||||
@@ -85,11 +80,6 @@ $(LIBS): $(OBJS) $(VERSION_SCRIPT)
|
|
||||||
$(DEVLIB): $(LIBS)
|
|
||||||
$(LN) $(LIBS) $@
|
|
||||||
|
|
||||||
-$(NV_VERSION_SCRIPT): $(VERSION_SCRIPT)
|
|
||||||
- @printf 'NOVERSION {\nglobal:\n' >$@
|
|
||||||
- @grep -P '^[ \t]+[a-zA-Z_][a-zA-Z0-9_]*;' $< >>$@
|
|
||||||
- @printf 'local:\n\t*;\n};\n' >>$@
|
|
||||||
-
|
|
||||||
$(LIBS:%.so.$(SONAME)=%-nv.so): $(OBJS) $(NV_VERSION_SCRIPT)
|
|
||||||
$(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ \
|
|
||||||
-Wl,--version-script=$(NV_VERSION_SCRIPT) -o $@ $(OBJS) $(LIBDEPS)
|
|
@ -1,172 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Martin Wilck <mwilck@suse.com>
|
|
||||||
Date: Thu, 27 Oct 2022 22:18:22 +0200
|
|
||||||
Subject: [PATCH] multipath-tools: Makefiles: move common code to rules.mk
|
|
||||||
|
|
||||||
The library Makefiles contain a lot of similar rules. Just
|
|
||||||
maintain them in a single file.
|
|
||||||
|
|
||||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
|
||||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
---
|
|
||||||
libmpathcmd/Makefile | 13 +------------
|
|
||||||
libmpathpersist/Makefile | 13 +------------
|
|
||||||
libmpathutil/Makefile | 13 +------------
|
|
||||||
libmpathvalid/Makefile | 13 ++-----------
|
|
||||||
libmultipath/Makefile | 16 ++--------------
|
|
||||||
rules.mk | 15 +++++++++++++++
|
|
||||||
6 files changed, 22 insertions(+), 61 deletions(-)
|
|
||||||
create mode 100644 rules.mk
|
|
||||||
|
|
||||||
diff --git a/libmpathcmd/Makefile b/libmpathcmd/Makefile
|
|
||||||
index f705c7f0..cfb202b8 100644
|
|
||||||
--- a/libmpathcmd/Makefile
|
|
||||||
+++ b/libmpathcmd/Makefile
|
|
||||||
@@ -6,18 +6,7 @@ OBJS := mpath_cmd.o
|
|
||||||
|
|
||||||
all: $(DEVLIB)
|
|
||||||
|
|
||||||
-$(LIBS): $(OBJS) $(VERSION_SCRIPT)
|
|
||||||
- $(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ \
|
|
||||||
- -Wl,--version-script=$(VERSION_SCRIPT) -o $@ $(OBJS) $(LIBDEPS)
|
|
||||||
-
|
|
||||||
-$(LIBS:%.so.$(SONAME)=%-nv.so): $(OBJS) $(NV_VERSION_SCRIPT)
|
|
||||||
- $(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ \
|
|
||||||
- -Wl,--version-script=$(NV_VERSION_SCRIPT) -o $@ $(OBJS) $(LIBDEPS)
|
|
||||||
-
|
|
||||||
-abi: $(LIBS:%.so.$(SONAME)=%-nv.abi)
|
|
||||||
-
|
|
||||||
-$(DEVLIB): $(LIBS)
|
|
||||||
- $(LN) $(LIBS) $@
|
|
||||||
+include $(TOPDIR)/rules.mk
|
|
||||||
|
|
||||||
install: all
|
|
||||||
$(INSTALL_PROGRAM) -d $(DESTDIR)$(syslibdir)
|
|
||||||
diff --git a/libmpathpersist/Makefile b/libmpathpersist/Makefile
|
|
||||||
index 6f69168f..94672556 100644
|
|
||||||
--- a/libmpathpersist/Makefile
|
|
||||||
+++ b/libmpathpersist/Makefile
|
|
||||||
@@ -9,18 +9,7 @@ OBJS := mpath_persist.o mpath_updatepr.o mpath_pr_ioctl.o mpath_persist_int.o
|
|
||||||
|
|
||||||
all: $(DEVLIB)
|
|
||||||
|
|
||||||
-$(LIBS): $(OBJS) $(VERSION_SCRIPT)
|
|
||||||
- $(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ \
|
|
||||||
- -Wl,--version-script=$(VERSION_SCRIPT) -o $@ $(OBJS) $(LIBDEPS)
|
|
||||||
-
|
|
||||||
-$(LIBS:%.so.$(SONAME)=%-nv.so): $(OBJS) $(NV_VERSION_SCRIPT)
|
|
||||||
- $(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ \
|
|
||||||
- -Wl,--version-script=$(NV_VERSION_SCRIPT) -o $@ $(OBJS) $(LIBDEPS)
|
|
||||||
-
|
|
||||||
-abi: $(LIBS:%.so.$(SONAME)=%-nv.abi)
|
|
||||||
-
|
|
||||||
-$(DEVLIB): $(LIBS)
|
|
||||||
- $(LN) $(LIBS) $@
|
|
||||||
+include $(TOPDIR)/rules.mk
|
|
||||||
|
|
||||||
install: all
|
|
||||||
$(INSTALL_PROGRAM) -d $(DESTDIR)$(syslibdir)
|
|
||||||
diff --git a/libmpathutil/Makefile b/libmpathutil/Makefile
|
|
||||||
index 5665af28..5ab33c09 100644
|
|
||||||
--- a/libmpathutil/Makefile
|
|
||||||
+++ b/libmpathutil/Makefile
|
|
||||||
@@ -17,18 +17,7 @@ OBJS := parser.o vector.o util.o debug.o time-util.o \
|
|
||||||
|
|
||||||
all: $(DEVLIB)
|
|
||||||
|
|
||||||
-$(LIBS): $(OBJS) $(VERSION_SCRIPT)
|
|
||||||
- $(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ \
|
|
||||||
- -Wl,--version-script=$(VERSION_SCRIPT) -o $@ $(OBJS) $(LIBDEPS)
|
|
||||||
-
|
|
||||||
-$(DEVLIB): $(LIBS)
|
|
||||||
- $(LN) $(LIBS) $@
|
|
||||||
-
|
|
||||||
-$(LIBS:%.so.$(SONAME)=%-nv.so): $(OBJS) $(NV_VERSION_SCRIPT)
|
|
||||||
- $(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ \
|
|
||||||
- -Wl,--version-script=$(NV_VERSION_SCRIPT) -o $@ $(OBJS) $(LIBDEPS)
|
|
||||||
-
|
|
||||||
-abi: $(LIBS:%.so.$(SONAME)=%-nv.abi)
|
|
||||||
+include $(TOPDIR)/rules.mk
|
|
||||||
|
|
||||||
install: all
|
|
||||||
$(INSTALL_PROGRAM) -d $(DESTDIR)$(syslibdir)
|
|
||||||
diff --git a/libmpathvalid/Makefile b/libmpathvalid/Makefile
|
|
||||||
index bd4ccc0d..88034df3 100644
|
|
||||||
--- a/libmpathvalid/Makefile
|
|
||||||
+++ b/libmpathvalid/Makefile
|
|
||||||
@@ -8,18 +8,9 @@ LIBDEPS += -lpthread -ldevmapper -ldl -L$(multipathdir) -lmultipath \
|
|
||||||
|
|
||||||
OBJS := mpath_valid.o
|
|
||||||
|
|
||||||
-all: $(LIBS)
|
|
||||||
+all: $(DEVLIB)
|
|
||||||
|
|
||||||
-$(LIBS): $(OBJS) $(VERSION_SCRIPT)
|
|
||||||
- $(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ -o $@ $(OBJS) $(LIBDEPS) \
|
|
||||||
- -Wl,--version-script=$(VERSION_SCRIPT)
|
|
||||||
- $(LN) $(LIBS) $(DEVLIB)
|
|
||||||
-
|
|
||||||
-$(LIBS:%.so.$(SONAME)=%-nv.so): $(OBJS) $(NV_VERSION_SCRIPT)
|
|
||||||
- $(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ \
|
|
||||||
- -Wl,--version-script=$(NV_VERSION_SCRIPT) -o $@ $(OBJS) $(LIBDEPS)
|
|
||||||
-
|
|
||||||
-abi: $(LIBS:%.so.$(SONAME)=%-nv.abi)
|
|
||||||
+include $(TOPDIR)/rules.mk
|
|
||||||
|
|
||||||
install: $(LIBS)
|
|
||||||
$(INSTALL_PROGRAM) -m 755 -d $(DESTDIR)$(syslibdir)
|
|
||||||
diff --git a/libmultipath/Makefile b/libmultipath/Makefile
|
|
||||||
index 9dc229ae..e24eab8a 100644
|
|
||||||
--- a/libmultipath/Makefile
|
|
||||||
+++ b/libmultipath/Makefile
|
|
||||||
@@ -56,6 +56,8 @@ OBJS := $(OBJS-O) $(OBJS-U)
|
|
||||||
|
|
||||||
all: $(DEVLIB)
|
|
||||||
|
|
||||||
+include $(TOPDIR)/rules.mk
|
|
||||||
+
|
|
||||||
nvme-lib.o: nvme-lib.c nvme-ioctl.c nvme-ioctl.h
|
|
||||||
$(CC) $(CPPFLAGS) $(CFLAGS) -Wno-unused-function -c -o $@ $<
|
|
||||||
|
|
||||||
@@ -72,20 +74,6 @@ nvme-ioctl.c: nvme/nvme-ioctl.c
|
|
||||||
nvme-ioctl.h: nvme/nvme-ioctl.h
|
|
||||||
$(call make_static,$<,$@)
|
|
||||||
|
|
||||||
-
|
|
||||||
-$(LIBS): $(OBJS) $(VERSION_SCRIPT)
|
|
||||||
- $(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ \
|
|
||||||
- -Wl,--version-script=$(VERSION_SCRIPT) -o $@ $(OBJS) $(LIBDEPS)
|
|
||||||
-
|
|
||||||
-$(DEVLIB): $(LIBS)
|
|
||||||
- $(LN) $(LIBS) $@
|
|
||||||
-
|
|
||||||
-$(LIBS:%.so.$(SONAME)=%-nv.so): $(OBJS) $(NV_VERSION_SCRIPT)
|
|
||||||
- $(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ \
|
|
||||||
- -Wl,--version-script=$(NV_VERSION_SCRIPT) -o $@ $(OBJS) $(LIBDEPS)
|
|
||||||
-
|
|
||||||
-abi: $(LIBS:%.so.$(SONAME)=%-nv.abi)
|
|
||||||
-
|
|
||||||
../tests/$(LIBS): $(OBJS-O) $(OBJS-T) $(VERSION_SCRIPT)
|
|
||||||
$(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=`basename $@` \
|
|
||||||
-o $@ $(OBJS-O) $(OBJS-T) $(LIBDEPS)
|
|
||||||
diff --git a/rules.mk b/rules.mk
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000..c1d80820
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/rules.mk
|
|
||||||
@@ -0,0 +1,15 @@
|
|
||||||
+# Copyright (c) SUSE LLC
|
|
||||||
+# SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
+
|
|
||||||
+$(DEVLIB): $(LIBS)
|
|
||||||
+ $(LN) $(LIBS) $@
|
|
||||||
+
|
|
||||||
+$(LIBS): $(OBJS) $(VERSION_SCRIPT)
|
|
||||||
+ $(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ \
|
|
||||||
+ -Wl,--version-script=$(VERSION_SCRIPT) -o $@ $(OBJS) $(LIBDEPS)
|
|
||||||
+
|
|
||||||
+$(LIBS:%.so.$(SONAME)=%-nv.so): $(OBJS) $(NV_VERSION_SCRIPT)
|
|
||||||
+ $(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ \
|
|
||||||
+ -Wl,--version-script=$(NV_VERSION_SCRIPT) -o $@ $(OBJS) $(LIBDEPS)
|
|
||||||
+
|
|
||||||
+abi: $(LIBS:%.so.$(SONAME)=%-nv.abi)
|
|
@ -1,603 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Martin Wilck <mwilck@suse.com>
|
|
||||||
Date: Fri, 28 Oct 2022 00:01:46 +0200
|
|
||||||
Subject: [PATCH] multipath-tools Makefiles: create config.mk
|
|
||||||
|
|
||||||
Rather than running the test scripts for certain system features
|
|
||||||
every time "make" is called, save the configuration in "config.mk"
|
|
||||||
and "libmultipath/autoconfig.h", and reuse it later. This reduces
|
|
||||||
build time, especially in subsequent builds, and the build output is
|
|
||||||
less garbled by compiler options.
|
|
||||||
|
|
||||||
It works by invoking the separate make file "create-config.mk" at
|
|
||||||
the beginning of the build process. Most of the complex makefile
|
|
||||||
functions are moved to "create-config.mk".
|
|
||||||
|
|
||||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
|
||||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
---
|
|
||||||
.github/workflows/foreign.yaml | 2 +-
|
|
||||||
.gitignore | 2 +
|
|
||||||
Makefile | 19 +++-
|
|
||||||
Makefile.inc | 76 +--------------
|
|
||||||
create-config.mk | 144 +++++++++++++++++++++++++++++
|
|
||||||
kpartx/Makefile | 4 -
|
|
||||||
kpartx/devmapper.c | 1 +
|
|
||||||
kpartx/kpartx.c | 1 +
|
|
||||||
libdmmp/test/Makefile | 1 +
|
|
||||||
libmultipath/Makefile | 30 +-----
|
|
||||||
libmultipath/devmapper.h | 2 +-
|
|
||||||
libmultipath/dict.c | 1 +
|
|
||||||
libmultipath/prioritizers/Makefile | 2 +-
|
|
||||||
libmultipath/propsel.c | 1 +
|
|
||||||
libmultipath/uevent.c | 1 +
|
|
||||||
multipathd/Makefile | 11 ---
|
|
||||||
multipathd/fpin.h | 1 +
|
|
||||||
multipathd/main.c | 1 +
|
|
||||||
rules.mk | 3 +
|
|
||||||
tests/Makefile | 8 --
|
|
||||||
20 files changed, 179 insertions(+), 132 deletions(-)
|
|
||||||
create mode 100644 create-config.mk
|
|
||||||
|
|
||||||
diff --git a/.github/workflows/foreign.yaml b/.github/workflows/foreign.yaml
|
|
||||||
index bd4e9c12..5a19913a 100644
|
|
||||||
--- a/.github/workflows/foreign.yaml
|
|
||||||
+++ b/.github/workflows/foreign.yaml
|
|
||||||
@@ -30,7 +30,7 @@ jobs:
|
|
||||||
if: ${{ matrix.arch != '' && matrix.arch != '-i386' }}
|
|
||||||
run: >
|
|
||||||
tar cfv binaries.tar
|
|
||||||
- Makefile*
|
|
||||||
+ Makefile* config.mk
|
|
||||||
libmpathcmd/*.so* libmultipath/*.so* libmpathutil/*.so*
|
|
||||||
libmultipath/checkers/*.so libmultipath/prioritizers/*.so
|
|
||||||
libmultipath/foreign/*.so
|
|
||||||
diff --git a/.gitignore b/.gitignore
|
|
||||||
index 83f8a552..535353e5 100644
|
|
||||||
--- a/.gitignore
|
|
||||||
+++ b/.gitignore
|
|
||||||
@@ -8,6 +8,7 @@
|
|
||||||
*.gz
|
|
||||||
*.d
|
|
||||||
\#*
|
|
||||||
+config.mk
|
|
||||||
cscope.files
|
|
||||||
cscope.out
|
|
||||||
kpartx/kpartx
|
|
||||||
@@ -35,5 +36,6 @@ tests/*.out
|
|
||||||
tests/*.vgr
|
|
||||||
libmultipath/nvme-ioctl.c
|
|
||||||
libmultipath/nvme-ioctl.h
|
|
||||||
+libmultipath/autoconfig.h
|
|
||||||
*/*-nv.version
|
|
||||||
reference-abi
|
|
||||||
diff --git a/Makefile b/Makefile
|
|
||||||
index 27b4641f..1b28db62 100644
|
|
||||||
--- a/Makefile
|
|
||||||
+++ b/Makefile
|
|
||||||
@@ -30,7 +30,14 @@ BUILDDIRS.clean := $(BUILDDIRS:=.clean) tests.clean
|
|
||||||
|
|
||||||
all: $(BUILDDIRS)
|
|
||||||
|
|
||||||
-$(BUILDDIRS):
|
|
||||||
+config.mk libmultipath/autoconfig.h:
|
|
||||||
+ @$(MAKE) -f create-config.mk
|
|
||||||
+ @echo ==== config.mk ====
|
|
||||||
+ @cat config.mk
|
|
||||||
+ @echo ==== autoconfig.h ====
|
|
||||||
+ @cat libmultipath/autoconfig.h
|
|
||||||
+
|
|
||||||
+$(BUILDDIRS): config.mk
|
|
||||||
$(MAKE) -C $@
|
|
||||||
|
|
||||||
$(LIB_BUILDDIRS:=.abi): $(LIB_BUILDDIRS)
|
|
||||||
@@ -83,7 +90,7 @@ libmultipath/checkers.install \
|
|
||||||
libmultipath/prioritizers.install \
|
|
||||||
libmultipath/foreign.install: libmultipath.install
|
|
||||||
|
|
||||||
-$(BUILDDIRS.clean):
|
|
||||||
+%.clean:
|
|
||||||
$(MAKE) -C ${@:.clean=} clean
|
|
||||||
|
|
||||||
%.install: %
|
|
||||||
@@ -92,8 +99,12 @@ $(BUILDDIRS.clean):
|
|
||||||
$(BUILDDIRS:=.uninstall):
|
|
||||||
$(MAKE) -C ${@:.uninstall=} uninstall
|
|
||||||
|
|
||||||
-clean: $(BUILDDIRS.clean)
|
|
||||||
- rm -rf abi abi.tar.gz abi-test compile_commands.json
|
|
||||||
+# If config.mk is missing, "make clean" in subdir either fails, or tries to
|
|
||||||
+# build it. Both is undesirable. Avoid it by creating config.mk temporarily.
|
|
||||||
+clean:
|
|
||||||
+ @touch config.mk
|
|
||||||
+ $(MAKE) $(BUILDDIRS:=.clean) tests.clean || true
|
|
||||||
+ rm -rf abi abi.tar.gz abi-test compile_commands.json config.mk
|
|
||||||
|
|
||||||
install: $(BUILDDIRS:=.install)
|
|
||||||
uninstall: $(BUILDDIRS:=.uninstall)
|
|
||||||
diff --git a/Makefile.inc b/Makefile.inc
|
|
||||||
index fe6bc088..415634f5 100644
|
|
||||||
--- a/Makefile.inc
|
|
||||||
+++ b/Makefile.inc
|
|
||||||
@@ -27,9 +27,9 @@ PKGCONFIG ?= pkg-config
|
|
||||||
ifeq ($(TOPDIR),)
|
|
||||||
TOPDIR = ..
|
|
||||||
endif
|
|
||||||
-
|
|
||||||
-SYSTEMD := $(strip $(or $(shell $(PKGCONFIG) --modversion libsystemd 2>/dev/null | awk '{print $$1}'), \
|
|
||||||
- $(shell systemctl --version 2>/dev/null | sed -n 's/systemd \([0-9]*\).*/\1/p')))
|
|
||||||
+ifneq ($(CREATE_CONFIG),1)
|
|
||||||
+include $(TOPDIR)/config.mk
|
|
||||||
+endif
|
|
||||||
|
|
||||||
# Paths. All these can be overridden on the "make" command line.
|
|
||||||
prefix :=
|
|
||||||
@@ -65,37 +65,6 @@ RM := rm -f
|
|
||||||
LN := ln -sf
|
|
||||||
INSTALL_PROGRAM := install
|
|
||||||
|
|
||||||
-# $(call TEST_CC_OPTION,option,fallback)
|
|
||||||
-# Test if the C compiler supports the option.
|
|
||||||
-# Evaluates to "option" if yes, and "fallback" otherwise.
|
|
||||||
-TEST_CC_OPTION = $(shell \
|
|
||||||
- if echo 'int main(void){return 0;}' | \
|
|
||||||
- $(CC) -o /dev/null -c -Werror "$(1)" -xc - >/dev/null 2>&1; \
|
|
||||||
- then \
|
|
||||||
- echo "$(1)"; \
|
|
||||||
- else \
|
|
||||||
- echo "$(2)"; \
|
|
||||||
- fi)
|
|
||||||
-
|
|
||||||
-# "make" on some distros will fail on explicit '#' or '\#' in the program text below
|
|
||||||
-__HASH__ := \#
|
|
||||||
-# Check if _DFORTIFY_SOURCE=3 is supported.
|
|
||||||
-# On some distros (e.g. Debian Buster) it will be falsely reported as supported
|
|
||||||
-# but it doesn't seem to make a difference wrt the compilation result.
|
|
||||||
-FORTIFY_OPT := $(shell \
|
|
||||||
- if /bin/echo -e '$(__HASH__)include <string.h>\nint main(void) { return 0; }' | \
|
|
||||||
- $(CC) -o /dev/null -c -O2 -Werror -D_FORTIFY_SOURCE=3 -xc - 2>/dev/null; \
|
|
||||||
- then \
|
|
||||||
- echo "-D_FORTIFY_SOURCE=3"; \
|
|
||||||
- else \
|
|
||||||
- echo "-D_FORTIFY_SOURCE=2"; \
|
|
||||||
- fi)
|
|
||||||
-
|
|
||||||
-STACKPROT := $(call TEST_CC_OPTION,-fstack-protector-strong,-fstack-protector)
|
|
||||||
-ERROR_DISCARDED_QUALIFIERS := $(call TEST_CC_OPTION,-Werror=discarded-qualifiers,)
|
|
||||||
-WNOCLOBBERED := $(call TEST_CC_OPTION,-Wno-clobbered -Wno-error=clobbered,)
|
|
||||||
-WFORMATOVERFLOW := $(call TEST_CC_OPTION,-Wformat-overflow=2,)
|
|
||||||
-
|
|
||||||
SYSTEMD_CPPFLAGS := $(if $(SYSTEMD),-DUSE_SYSTEMD=$(SYSTEMD))
|
|
||||||
SYSTEMD_LIBDEPS := $(if $(SYSTEMD),$(if $(shell test $(SYSTEMD) -gt 209 && echo 1),-lsystemd,-lsystemd-daemon))
|
|
||||||
|
|
||||||
@@ -133,45 +102,6 @@ LIBS = $(DEVLIB).$(SONAME)
|
|
||||||
VERSION_SCRIPT = $(DEVLIB:%.so=%.version)
|
|
||||||
NV_VERSION_SCRIPT = $(DEVLIB:%.so=%-nv.version)
|
|
||||||
|
|
||||||
-# Check whether a function with name $1 has been declared in header file $2.
|
|
||||||
-check_func = $(shell \
|
|
||||||
- if grep -Eq "^[^[:blank:]]+[[:blank:]]+$1[[:blank:]]*(.*)*" "$2"; then \
|
|
||||||
- found=1; \
|
|
||||||
- status="yes"; \
|
|
||||||
- else \
|
|
||||||
- found=0; \
|
|
||||||
- status="no"; \
|
|
||||||
- fi; \
|
|
||||||
- echo 1>&2 "Checking for $1 in $2 ... $$status"; \
|
|
||||||
- echo "$$found" \
|
|
||||||
- )
|
|
||||||
-
|
|
||||||
-# Checker whether a file with name $1 exists
|
|
||||||
-check_file = $(shell \
|
|
||||||
- if [ -f "$1" ]; then \
|
|
||||||
- found=1; \
|
|
||||||
- status="yes"; \
|
|
||||||
- else \
|
|
||||||
- found=0; \
|
|
||||||
- status="no"; \
|
|
||||||
- fi; \
|
|
||||||
- echo 1>&2 "Checking if $1 exists ... $$status"; \
|
|
||||||
- echo "$$found" \
|
|
||||||
- )
|
|
||||||
-
|
|
||||||
-# Check whether a file contains a variable with name $1 in header file $2
|
|
||||||
-check_var = $(shell \
|
|
||||||
- if grep -Eq "(^|[[:blank:]])$1([[:blank:]]|=|$$)" "$2"; then \
|
|
||||||
- found=1; \
|
|
||||||
- status="yes"; \
|
|
||||||
- else \
|
|
||||||
- found=0; \
|
|
||||||
- status="no"; \
|
|
||||||
- fi; \
|
|
||||||
- echo 1>&2 "Checking for $1 in $2 ... $$status"; \
|
|
||||||
- echo "$$found" \
|
|
||||||
- )
|
|
||||||
-
|
|
||||||
%.o: %.c
|
|
||||||
@echo building $@ because of $?
|
|
||||||
$(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
|
|
||||||
diff --git a/create-config.mk b/create-config.mk
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000..2cc5284f
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/create-config.mk
|
|
||||||
@@ -0,0 +1,144 @@
|
|
||||||
+# Copyright (c) SUSE LLC
|
|
||||||
+# SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
+
|
|
||||||
+TOPDIR := .
|
|
||||||
+CREATE_CONFIG := 1
|
|
||||||
+include $(TOPDIR)/Makefile.inc
|
|
||||||
+
|
|
||||||
+# Check whether a function with name $1 has been declared in header file $2.
|
|
||||||
+check_func = $(shell \
|
|
||||||
+ if grep -Eq "^[^[:blank:]]+[[:blank:]]+$1[[:blank:]]*(.*)*" "$2"; then \
|
|
||||||
+ found=1; \
|
|
||||||
+ status="yes"; \
|
|
||||||
+ else \
|
|
||||||
+ found=0; \
|
|
||||||
+ status="no"; \
|
|
||||||
+ fi; \
|
|
||||||
+ echo 1>&2 "Checking for $1 in $2 ... $$status"; \
|
|
||||||
+ echo "$$found" \
|
|
||||||
+ )
|
|
||||||
+
|
|
||||||
+# Checker whether a file with name $1 exists
|
|
||||||
+check_file = $(shell \
|
|
||||||
+ if [ -f "$1" ]; then \
|
|
||||||
+ found=1; \
|
|
||||||
+ status="yes"; \
|
|
||||||
+ else \
|
|
||||||
+ found=0; \
|
|
||||||
+ status="no"; \
|
|
||||||
+ fi; \
|
|
||||||
+ echo 1>&2 "Checking if $1 exists ... $$status"; \
|
|
||||||
+ echo "$$found" \
|
|
||||||
+ )
|
|
||||||
+
|
|
||||||
+# Check whether a file contains a variable with name $1 in header file $2
|
|
||||||
+check_var = $(shell \
|
|
||||||
+ if grep -Eq "(^|[[:blank:]])$1([[:blank:]]|=|$$)" "$2"; then \
|
|
||||||
+ found=1; \
|
|
||||||
+ status="yes"; \
|
|
||||||
+ else \
|
|
||||||
+ found=0; \
|
|
||||||
+ status="no"; \
|
|
||||||
+ fi; \
|
|
||||||
+ echo 1>&2 "Checking for $1 in $2 ... $$status"; \
|
|
||||||
+ echo "$$found" \
|
|
||||||
+ )
|
|
||||||
+
|
|
||||||
+# Test special behavior of gcc 4.8 with nested initializers
|
|
||||||
+# gcc 4.8 compiles blacklist.c only with -Wno-missing-field-initializers
|
|
||||||
+TEST_MISSING_INITIALIZERS = $(shell \
|
|
||||||
+ echo 'struct A {int a, b;}; struct B {struct A a; int b;} b = {.a.a=1};' | \
|
|
||||||
+ $(CC) -c -Werror -Wmissing-field-initializers -o /dev/null -xc - >/dev/null 2>&1 \
|
|
||||||
+ || echo -Wno-missing-field-initializers)
|
|
||||||
+
|
|
||||||
+DEFINES :=
|
|
||||||
+
|
|
||||||
+ifneq ($(call check_func,dm_task_no_flush,$(devmapper_incdir)/libdevmapper.h),0)
|
|
||||||
+ DEFINES += LIBDM_API_FLUSH
|
|
||||||
+endif
|
|
||||||
+
|
|
||||||
+ifneq ($(call check_func,dm_task_get_errno,$(devmapper_incdir)/libdevmapper.h),0)
|
|
||||||
+ DEFINES += LIBDM_API_GET_ERRNO
|
|
||||||
+endif
|
|
||||||
+
|
|
||||||
+ifneq ($(call check_func,dm_task_set_cookie,$(devmapper_incdir)/libdevmapper.h),0)
|
|
||||||
+ DEFINES += LIBDM_API_COOKIE
|
|
||||||
+endif
|
|
||||||
+
|
|
||||||
+ifneq ($(call check_func,udev_monitor_set_receive_buffer_size,$(libudev_incdir)/libudev.h),0)
|
|
||||||
+ DEFINES += LIBUDEV_API_RECVBUF
|
|
||||||
+endif
|
|
||||||
+
|
|
||||||
+ifneq ($(call check_func,dm_task_deferred_remove,$(devmapper_incdir)/libdevmapper.h),0)
|
|
||||||
+ DEFINES += LIBDM_API_DEFERRED
|
|
||||||
+endif
|
|
||||||
+
|
|
||||||
+ifneq ($(call check_func,dm_hold_control_dev,$(devmapper_incdir)/libdevmapper.h),0)
|
|
||||||
+ DEFINES += LIBDM_API_HOLD_CONTROL
|
|
||||||
+endif
|
|
||||||
+
|
|
||||||
+ifneq ($(call check_var,ELS_DTAG_LNK_INTEGRITY,$(kernel_incdir)/scsi/fc/fc_els.h),0)
|
|
||||||
+ DEFINES += FPIN_EVENT_HANDLER
|
|
||||||
+ FPIN_SUPPORT = 1
|
|
||||||
+endif
|
|
||||||
+
|
|
||||||
+ifneq ($(call check_file,$(kernel_incdir)/linux/nvme_ioctl.h),0)
|
|
||||||
+ ANA_SUPPORT := 1
|
|
||||||
+endif
|
|
||||||
+
|
|
||||||
+ifeq ($(ENABLE_DMEVENTS_POLL),0)
|
|
||||||
+ DEFINES += -DNO_DMEVENTS_POLL
|
|
||||||
+endif
|
|
||||||
+
|
|
||||||
+SYSTEMD := $(strip $(or $(shell $(PKGCONFIG) --modversion libsystemd 2>/dev/null | awk '{print $$1}'), \
|
|
||||||
+ $(shell systemctl --version 2>/dev/null | sed -n 's/systemd \([0-9]*\).*/\1/p')))
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+# $(call TEST_CC_OPTION,option,fallback)
|
|
||||||
+# Test if the C compiler supports the option.
|
|
||||||
+# Evaluates to "option" if yes, and "fallback" otherwise.
|
|
||||||
+TEST_CC_OPTION = $(shell \
|
|
||||||
+ if echo 'int main(void){return 0;}' | \
|
|
||||||
+ $(CC) -o /dev/null -c -Werror "$(1)" -xc - >/dev/null 2>&1; \
|
|
||||||
+ then \
|
|
||||||
+ echo "$(1)"; \
|
|
||||||
+ else \
|
|
||||||
+ echo "$(2)"; \
|
|
||||||
+ fi)
|
|
||||||
+
|
|
||||||
+# "make" on some distros will fail on explicit '#' or '\#' in the program text below
|
|
||||||
+__HASH__ := \#
|
|
||||||
+# Check if _DFORTIFY_SOURCE=3 is supported.
|
|
||||||
+# On some distros (e.g. Debian Buster) it will be falsely reported as supported
|
|
||||||
+# but it doesn't seem to make a difference wrt the compilation result.
|
|
||||||
+FORTIFY_OPT := $(shell \
|
|
||||||
+ if /bin/echo -e '$(__HASH__)include <string.h>\nint main(void) { return 0; }' | \
|
|
||||||
+ $(CC) -o /dev/null -c -O2 -Werror -D_FORTIFY_SOURCE=3 -xc - 2>/dev/null; \
|
|
||||||
+ then \
|
|
||||||
+ echo "-D_FORTIFY_SOURCE=3"; \
|
|
||||||
+ else \
|
|
||||||
+ echo "-D_FORTIFY_SOURCE=2"; \
|
|
||||||
+ fi)
|
|
||||||
+
|
|
||||||
+STACKPROT :=
|
|
||||||
+
|
|
||||||
+all: $(multipathdir)/autoconfig.h $(TOPDIR)/config.mk
|
|
||||||
+
|
|
||||||
+$(multipathdir)/autoconfig.h:
|
|
||||||
+ @echo creating $@
|
|
||||||
+ @echo '#ifndef _AUTOCONFIG_H' >$@
|
|
||||||
+ @echo '#define _AUTOCONFIG_H' >>$@
|
|
||||||
+ @for x in $(DEFINES); do echo "#define $$x" >>$@; done
|
|
||||||
+ @echo '#endif' >>$@
|
|
||||||
+
|
|
||||||
+$(TOPDIR)/config.mk:
|
|
||||||
+ @echo creating $@
|
|
||||||
+ @echo "FPIN_SUPPORT := $(FPIN_SUPPORT)" >$@
|
|
||||||
+ @echo "FORTIFY_OPT := $(FORTIFY_OPT)" >>$@
|
|
||||||
+ @echo "SYSTEMD := $(SYSTEMD)" >>$@
|
|
||||||
+ @echo "ANA_SUPPORT := $(ANA_SUPPORT)" >>$@
|
|
||||||
+ @echo "STACKPROT := $(call TEST_CC_OPTION,-fstack-protector-strong,-fstack-protector)" >>$@
|
|
||||||
+ @echo "ERROR_DISCARDED_QUALIFIERS := $(call TEST_CC_OPTION,-Werror=discarded-qualifiers,)" >>$@
|
|
||||||
+ @echo "WNOCLOBBERED := $(call TEST_CC_OPTION,-Wno-clobbered -Wno-error=clobbered,)" >>$@
|
|
||||||
+ @echo "WFORMATOVERFLOW := $(call TEST_CC_OPTION,-Wformat-overflow=2,)" >>$@
|
|
||||||
+ @echo "W_MISSING_INITIALIZERS := $(call TEST_MISSING_INITIALIZERS)" >>$@
|
|
||||||
diff --git a/kpartx/Makefile b/kpartx/Makefile
|
|
||||||
index 7ceae96b..31b1138a 100644
|
|
||||||
--- a/kpartx/Makefile
|
|
||||||
+++ b/kpartx/Makefile
|
|
||||||
@@ -6,10 +6,6 @@ include ../Makefile.inc
|
|
||||||
EXEC := kpartx
|
|
||||||
|
|
||||||
CPPFLAGS += -I. -I$(multipathdir) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
|
|
||||||
-ifneq ($(call check_func,dm_task_set_cookie,$(devmapper_incdir)/libdevmapper.h),0)
|
|
||||||
- CPPFLAGS += -DLIBDM_API_COOKIE
|
|
||||||
-endif
|
|
||||||
-
|
|
||||||
CFLAGS += $(BIN_CFLAGS)
|
|
||||||
LDFLAGS += $(BIN_LDFLAGS)
|
|
||||||
LIBDEPS += -ldevmapper
|
|
||||||
diff --git a/kpartx/devmapper.c b/kpartx/devmapper.c
|
|
||||||
index bf14c784..f12762c5 100644
|
|
||||||
--- a/kpartx/devmapper.c
|
|
||||||
+++ b/kpartx/devmapper.c
|
|
||||||
@@ -9,6 +9,7 @@
|
|
||||||
#include <ctype.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <sys/sysmacros.h>
|
|
||||||
+#include "autoconfig.h"
|
|
||||||
#include "devmapper.h"
|
|
||||||
#include "kpartx.h"
|
|
||||||
|
|
||||||
diff --git a/kpartx/kpartx.c b/kpartx/kpartx.c
|
|
||||||
index 1d568c9e..46cb76ba 100644
|
|
||||||
--- a/kpartx/kpartx.c
|
|
||||||
+++ b/kpartx/kpartx.c
|
|
||||||
@@ -34,6 +34,7 @@
|
|
||||||
#include <ctype.h>
|
|
||||||
#include <libdevmapper.h>
|
|
||||||
|
|
||||||
+#include "autoconfig.h"
|
|
||||||
#include "devmapper.h"
|
|
||||||
#include "crc32.h"
|
|
||||||
#include "lopart.h"
|
|
||||||
diff --git a/libdmmp/test/Makefile b/libdmmp/test/Makefile
|
|
||||||
index 76b24d61..93de64a0 100644
|
|
||||||
--- a/libdmmp/test/Makefile
|
|
||||||
+++ b/libdmmp/test/Makefile
|
|
||||||
@@ -2,6 +2,7 @@
|
|
||||||
#
|
|
||||||
# Copyright (C) 2015-2016 Gris Ge <fge@redhat.com>
|
|
||||||
#
|
|
||||||
+TOPDIR := ../..
|
|
||||||
include ../../Makefile.inc
|
|
||||||
|
|
||||||
_libdmmpdir=../$(libdmmpdir)
|
|
||||||
diff --git a/libmultipath/Makefile b/libmultipath/Makefile
|
|
||||||
index e24eab8a..1cc13577 100644
|
|
||||||
--- a/libmultipath/Makefile
|
|
||||||
+++ b/libmultipath/Makefile
|
|
||||||
@@ -9,34 +9,6 @@ CFLAGS += $(LIB_CFLAGS)
|
|
||||||
LIBDEPS += -lpthread -ldl -ldevmapper -ludev -L$(mpathutildir) -lmpathutil -L$(mpathcmddir) -lmpathcmd \
|
|
||||||
-lurcu -laio $(SYSTEMD_LIBDEPS)
|
|
||||||
|
|
||||||
-ifneq ($(call check_func,dm_task_no_flush,$(devmapper_incdir)/libdevmapper.h),0)
|
|
||||||
- CPPFLAGS += -DLIBDM_API_FLUSH
|
|
||||||
-endif
|
|
||||||
-
|
|
||||||
-ifneq ($(call check_func,dm_task_get_errno,$(devmapper_incdir)/libdevmapper.h),0)
|
|
||||||
- CPPFLAGS += -DLIBDM_API_GET_ERRNO
|
|
||||||
-endif
|
|
||||||
-
|
|
||||||
-ifneq ($(call check_func,dm_task_set_cookie,$(devmapper_incdir)/libdevmapper.h),0)
|
|
||||||
- CPPFLAGS += -DLIBDM_API_COOKIE
|
|
||||||
-endif
|
|
||||||
-
|
|
||||||
-ifneq ($(call check_func,udev_monitor_set_receive_buffer_size,$(libudev_incdir)/libudev.h),0)
|
|
||||||
- CPPFLAGS += -DLIBUDEV_API_RECVBUF
|
|
||||||
-endif
|
|
||||||
-
|
|
||||||
-ifneq ($(call check_func,dm_task_deferred_remove,$(devmapper_incdir)/libdevmapper.h),0)
|
|
||||||
- CPPFLAGS += -DLIBDM_API_DEFERRED
|
|
||||||
-endif
|
|
||||||
-
|
|
||||||
-ifneq ($(call check_func,dm_hold_control_dev,$(devmapper_incdir)/libdevmapper.h),0)
|
|
||||||
- CPPFLAGS += -DLIBDM_API_HOLD_CONTROL
|
|
||||||
-endif
|
|
||||||
-
|
|
||||||
-ifneq ($(call check_var,ELS_DTAG_LNK_INTEGRITY,$(kernel_incdir)/scsi/fc/fc_els.h),0)
|
|
||||||
- CPPFLAGS += -DFPIN_EVENT_HANDLER
|
|
||||||
-endif
|
|
||||||
-
|
|
||||||
# object files referencing MULTIPATH_DIR or CONFIG_DIR
|
|
||||||
# they need to be recompiled for unit tests
|
|
||||||
OBJS-U := prio.o checkers.o foreign.o config.o
|
|
||||||
@@ -97,7 +69,7 @@ uninstall:
|
|
||||||
$(RM) $(DESTDIR)$(syslibdir)/$(DEVLIB)
|
|
||||||
|
|
||||||
clean: dep_clean
|
|
||||||
- $(RM) core *.a *.o *.so *.so.* *.abi nvme-ioctl.c nvme-ioctl.h $(NV_VERSION_SCRIPT)
|
|
||||||
+ $(RM) core *.a *.o *.so *.so.* *.abi nvme-ioctl.c nvme-ioctl.h autoconfig.h $(NV_VERSION_SCRIPT)
|
|
||||||
|
|
||||||
include $(wildcard $(OBJS:.o=.d))
|
|
||||||
|
|
||||||
diff --git a/libmultipath/devmapper.h b/libmultipath/devmapper.h
|
|
||||||
index 703f3bf8..42f8eccd 100644
|
|
||||||
--- a/libmultipath/devmapper.h
|
|
||||||
+++ b/libmultipath/devmapper.h
|
|
||||||
@@ -1,6 +1,6 @@
|
|
||||||
#ifndef _DEVMAPPER_H
|
|
||||||
#define _DEVMAPPER_H
|
|
||||||
-
|
|
||||||
+#include "autoconfig.h"
|
|
||||||
#include "structs.h"
|
|
||||||
|
|
||||||
#define TGT_MPATH "multipath"
|
|
||||||
diff --git a/libmultipath/dict.c b/libmultipath/dict.c
|
|
||||||
index aa93fe43..6fc77315 100644
|
|
||||||
--- a/libmultipath/dict.c
|
|
||||||
+++ b/libmultipath/dict.c
|
|
||||||
@@ -24,6 +24,7 @@
|
|
||||||
#include <errno.h>
|
|
||||||
#include <inttypes.h>
|
|
||||||
#include <libudev.h>
|
|
||||||
+#include "autoconfig.h"
|
|
||||||
#include "mpath_cmd.h"
|
|
||||||
#include "dict.h"
|
|
||||||
#include "strbuf.h"
|
|
||||||
diff --git a/libmultipath/prioritizers/Makefile b/libmultipath/prioritizers/Makefile
|
|
||||||
index 72eefe49..a699e8a6 100644
|
|
||||||
--- a/libmultipath/prioritizers/Makefile
|
|
||||||
+++ b/libmultipath/prioritizers/Makefile
|
|
||||||
@@ -26,7 +26,7 @@ LIBS = \
|
|
||||||
libpriopath_latency.so \
|
|
||||||
libpriosysfs.so
|
|
||||||
|
|
||||||
-ifneq ($(call check_file,$(kernel_incdir)/linux/nvme_ioctl.h),0)
|
|
||||||
+ifneq ($(ANA_SUPPORT),1)
|
|
||||||
LIBS += libprioana.so
|
|
||||||
CPPFLAGS += -I../nvme
|
|
||||||
endif
|
|
||||||
diff --git a/libmultipath/propsel.c b/libmultipath/propsel.c
|
|
||||||
index d4f19897..d1d5cc25 100644
|
|
||||||
--- a/libmultipath/propsel.c
|
|
||||||
+++ b/libmultipath/propsel.c
|
|
||||||
@@ -5,6 +5,7 @@
|
|
||||||
*/
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
+#include "autoconfig.h"
|
|
||||||
#include "nvme-lib.h"
|
|
||||||
#include "checkers.h"
|
|
||||||
#include "vector.h"
|
|
||||||
diff --git a/libmultipath/uevent.c b/libmultipath/uevent.c
|
|
||||||
index 57447ca0..bbc8e9e5 100644
|
|
||||||
--- a/libmultipath/uevent.c
|
|
||||||
+++ b/libmultipath/uevent.c
|
|
||||||
@@ -42,6 +42,7 @@
|
|
||||||
#include <sys/time.h>
|
|
||||||
#include <libudev.h>
|
|
||||||
|
|
||||||
+#include "autoconfig.h"
|
|
||||||
#include "debug.h"
|
|
||||||
#include "list.h"
|
|
||||||
#include "uevent.h"
|
|
||||||
diff --git a/multipathd/Makefile b/multipathd/Makefile
|
|
||||||
index bb8f7770..587bb916 100644
|
|
||||||
--- a/multipathd/Makefile
|
|
||||||
+++ b/multipathd/Makefile
|
|
||||||
@@ -8,17 +8,6 @@ CPPFLAGS += -I$(multipathdir) -I$(mpathutildir) -I$(mpathpersistdir) -I$(mpathcm
|
|
||||||
awk -F. '{ printf("-DURCU_VERSION=0x%06x", 256 * ( 256 * $$1 + $$2) + $$3); }') \
|
|
||||||
-DBINDIR='"$(bindir)"' $(SYSTEMD_CPPFLAGS)
|
|
||||||
|
|
||||||
-ifeq ($(ENABLE_DMEVENTS_POLL),0)
|
|
||||||
- CPPFLAGS += -DNO_DMEVENTS_POLL
|
|
||||||
-endif
|
|
||||||
-ifneq ($(call check_func,dm_task_get_errno,$(devmapper_incdir)/libdevmapper.h),0)
|
|
||||||
- CPPFLAGS += -DLIBDM_API_GET_ERRNO
|
|
||||||
-endif
|
|
||||||
-ifneq ($(call check_var,ELS_DTAG_LNK_INTEGRITY,$(kernel_incdir)/scsi/fc/fc_els.h),0)
|
|
||||||
- CPPFLAGS += -DFPIN_EVENT_HANDLER
|
|
||||||
- FPIN_SUPPORT = 1
|
|
||||||
-endif
|
|
||||||
-
|
|
||||||
#
|
|
||||||
# debugging stuff
|
|
||||||
#
|
|
||||||
diff --git a/multipathd/fpin.h b/multipathd/fpin.h
|
|
||||||
index bfcc1ce2..3c374441 100644
|
|
||||||
--- a/multipathd/fpin.h
|
|
||||||
+++ b/multipathd/fpin.h
|
|
||||||
@@ -1,5 +1,6 @@
|
|
||||||
#ifndef __FPIN_H__
|
|
||||||
#define __FPIN_H__
|
|
||||||
+#include "autoconfig.h"
|
|
||||||
|
|
||||||
#ifdef FPIN_EVENT_HANDLER
|
|
||||||
void *fpin_fabric_notification_receiver(void *unused);
|
|
||||||
diff --git a/multipathd/main.c b/multipathd/main.c
|
|
||||||
index ba52d393..1e1b254f 100644
|
|
||||||
--- a/multipathd/main.c
|
|
||||||
+++ b/multipathd/main.c
|
|
||||||
@@ -4,6 +4,7 @@
|
|
||||||
* Copyright (c) 2005 Benjamin Marzinski, Redhat
|
|
||||||
* Copyright (c) 2005 Edward Goggin, EMC
|
|
||||||
*/
|
|
||||||
+#include "autoconfig.h"
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <libdevmapper.h>
|
|
||||||
diff --git a/rules.mk b/rules.mk
|
|
||||||
index c1d80820..d8612527 100644
|
|
||||||
--- a/rules.mk
|
|
||||||
+++ b/rules.mk
|
|
||||||
@@ -13,3 +13,6 @@ $(LIBS:%.so.$(SONAME)=%-nv.so): $(OBJS) $(NV_VERSION_SCRIPT)
|
|
||||||
-Wl,--version-script=$(NV_VERSION_SCRIPT) -o $@ $(OBJS) $(LIBDEPS)
|
|
||||||
|
|
||||||
abi: $(LIBS:%.so.$(SONAME)=%-nv.abi)
|
|
||||||
+
|
|
||||||
+$(TOPDIR)/config.mk $(multipathdir)/autoconfig.h:
|
|
||||||
+ $(MAKE) -C $(TOPDIR) -f create-config.mk
|
|
||||||
diff --git a/tests/Makefile b/tests/Makefile
|
|
||||||
index 3a5b161c..d9856d17 100644
|
|
||||||
--- a/tests/Makefile
|
|
||||||
+++ b/tests/Makefile
|
|
||||||
@@ -3,14 +3,6 @@ include ../Makefile.inc
|
|
||||||
# directory where to run the tests
|
|
||||||
TESTDIR := $(CURDIR)
|
|
||||||
|
|
||||||
-# Test special behavior of gcc 4.8 with nested initializers
|
|
||||||
-# gcc 4.8 compiles blacklist.c only with -Wno-missing-field-initializers
|
|
||||||
-TEST_MISSING_INITIALIZERS = $(shell \
|
|
||||||
- echo 'struct A {int a, b;}; struct B {struct A a; int b;} b = {.a.a=1};' | \
|
|
||||||
- $(CC) -c -Werror -Wmissing-field-initializers -o /dev/null -xc - >/dev/null 2>&1 \
|
|
||||||
- || echo -Wno-missing-field-initializers)
|
|
||||||
-W_MISSING_INITIALIZERS := $(call TEST_MISSING_INITIALIZERS)
|
|
||||||
-
|
|
||||||
CPPFLAGS += -I$(multipathdir) -I$(mpathutildir) -I$(mpathcmddir) -I$(daemondir) \
|
|
||||||
-DTESTCONFDIR=\"$(TESTDIR)/conf.d\"
|
|
||||||
CFLAGS += $(BIN_CFLAGS) -Wno-unused-parameter $(W_MISSING_INITIALIZERS)
|
|
@ -14,10 +14,10 @@ Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|||||||
2 files changed, 8 insertions(+), 10 deletions(-)
|
2 files changed, 8 insertions(+), 10 deletions(-)
|
||||||
|
|
||||||
diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c
|
diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c
|
||||||
index f3fccedd..c883fd02 100644
|
index 67ac0e6d..7fdbc1c3 100644
|
||||||
--- a/libmultipath/discovery.c
|
--- a/libmultipath/discovery.c
|
||||||
+++ b/libmultipath/discovery.c
|
+++ b/libmultipath/discovery.c
|
||||||
@@ -1176,13 +1176,9 @@ parse_vpd_pg83(const unsigned char *in, size_t in_len,
|
@@ -1177,13 +1177,9 @@ parse_vpd_pg83(const unsigned char *in, size_t in_len,
|
||||||
good_len = 8;
|
good_len = 8;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
@ -33,7 +33,7 @@ index f3fccedd..c883fd02 100644
|
|||||||
good_len = 8;
|
good_len = 8;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -1200,10 +1196,6 @@ parse_vpd_pg83(const unsigned char *in, size_t in_len,
|
@@ -1201,10 +1197,6 @@ parse_vpd_pg83(const unsigned char *in, size_t in_len,
|
||||||
break;
|
break;
|
||||||
case 0x8:
|
case 0x8:
|
||||||
/* SCSI Name: Prio 3 */
|
/* SCSI Name: Prio 3 */
|
@ -1,879 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Martin Wilck <mwilck@suse.com>
|
|
||||||
Date: Fri, 28 Oct 2022 12:39:06 +0200
|
|
||||||
Subject: [PATCH] multipath-tools Makefiles: enable quiet build
|
|
||||||
|
|
||||||
Like many other projects, make it possible to print much less
|
|
||||||
output during build. Verbose output is enabled with "make V=1", as
|
|
||||||
usual.
|
|
||||||
|
|
||||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
|
||||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
---
|
|
||||||
Makefile | 12 +++----
|
|
||||||
Makefile.inc | 10 +++---
|
|
||||||
kpartx/Makefile | 41 ++++++++++++-----------
|
|
||||||
libdmmp/Makefile | 48 +++++++++++++-------------
|
|
||||||
libdmmp/test/Makefile | 8 ++---
|
|
||||||
libmpathcmd/Makefile | 20 +++++------
|
|
||||||
libmpathpersist/Makefile | 32 +++++++++---------
|
|
||||||
libmpathutil/Makefile | 14 ++++----
|
|
||||||
libmpathvalid/Makefile | 20 +++++------
|
|
||||||
libmultipath/Makefile | 30 ++++++++---------
|
|
||||||
libmultipath/checkers/Makefile | 8 ++---
|
|
||||||
libmultipath/foreign/Makefile | 8 ++---
|
|
||||||
libmultipath/prioritizers/Makefile | 8 ++---
|
|
||||||
mpathpersist/Makefile | 18 +++++-----
|
|
||||||
multipath/Makefile | 54 ++++++++++++++++--------------
|
|
||||||
multipathd/Makefile | 42 ++++++++++++-----------
|
|
||||||
rules.mk | 8 ++---
|
|
||||||
tests/Makefile | 23 +++++++------
|
|
||||||
18 files changed, 206 insertions(+), 198 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/Makefile b/Makefile
|
|
||||||
index 1b28db62..e3ce1a8d 100644
|
|
||||||
--- a/Makefile
|
|
||||||
+++ b/Makefile
|
|
||||||
@@ -38,17 +38,17 @@ config.mk libmultipath/autoconfig.h:
|
|
||||||
@cat libmultipath/autoconfig.h
|
|
||||||
|
|
||||||
$(BUILDDIRS): config.mk
|
|
||||||
- $(MAKE) -C $@
|
|
||||||
+ @$(MAKE) -C $@
|
|
||||||
|
|
||||||
$(LIB_BUILDDIRS:=.abi): $(LIB_BUILDDIRS)
|
|
||||||
- $(MAKE) -C ${@:.abi=} abi
|
|
||||||
+ @$(MAKE) -C ${@:.abi=} abi
|
|
||||||
|
|
||||||
# Create formal representation of the ABI
|
|
||||||
# Useful for verifying ABI compatibility
|
|
||||||
# Requires abidw from the abigail suite (https://sourceware.org/libabigail/)
|
|
||||||
.PHONY: abi
|
|
||||||
abi: $(LIB_BUILDDIRS:=.abi)
|
|
||||||
- mkdir -p $@
|
|
||||||
+ @mkdir -p $@
|
|
||||||
ln -ft $@ $(LIB_BUILDDIRS:=/*.abi)
|
|
||||||
|
|
||||||
abi.tar.gz: abi
|
|
||||||
@@ -91,13 +91,13 @@ libmultipath/checkers.install \
|
|
||||||
libmultipath/foreign.install: libmultipath.install
|
|
||||||
|
|
||||||
%.clean:
|
|
||||||
- $(MAKE) -C ${@:.clean=} clean
|
|
||||||
+ @$(MAKE) -C ${@:.clean=} clean
|
|
||||||
|
|
||||||
%.install: %
|
|
||||||
- $(MAKE) -C ${@:.install=} install
|
|
||||||
+ @$(MAKE) -C ${@:.install=} install
|
|
||||||
|
|
||||||
$(BUILDDIRS:=.uninstall):
|
|
||||||
- $(MAKE) -C ${@:.uninstall=} uninstall
|
|
||||||
+ @$(MAKE) -C ${@:.uninstall=} uninstall
|
|
||||||
|
|
||||||
# If config.mk is missing, "make clean" in subdir either fails, or tries to
|
|
||||||
# build it. Both is undesirable. Avoid it by creating config.mk temporarily.
|
|
||||||
diff --git a/Makefile.inc b/Makefile.inc
|
|
||||||
index 415634f5..3e14cb8c 100644
|
|
||||||
--- a/Makefile.inc
|
|
||||||
+++ b/Makefile.inc
|
|
||||||
@@ -1,4 +1,4 @@
|
|
||||||
-#
|
|
||||||
+# -*- Makefile -*-
|
|
||||||
# Copyright (C) 2004 Christophe Varoqui, <christophe.varoqui@opensvc.com>
|
|
||||||
#
|
|
||||||
|
|
||||||
@@ -60,6 +60,8 @@ devmapper_incdir := $(or $(shell $(PKGCONFIG) --variable=includedir devmapper),/
|
|
||||||
libudev_incdir := $(or $(shell $(PKGCONFIG) --variable=includedir libudev),/usr/include)
|
|
||||||
kernel_incdir := /usr/include
|
|
||||||
|
|
||||||
+Q := $(if $(V),,@)
|
|
||||||
+
|
|
||||||
GZIP_PROG := gzip -9 -c
|
|
||||||
RM := rm -f
|
|
||||||
LN := ln -sf
|
|
||||||
@@ -104,13 +106,13 @@ NV_VERSION_SCRIPT = $(DEVLIB:%.so=%-nv.version)
|
|
||||||
|
|
||||||
%.o: %.c
|
|
||||||
@echo building $@ because of $?
|
|
||||||
- $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
|
|
||||||
+ $(Q)$(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
|
|
||||||
|
|
||||||
%.abi: %.so.0
|
|
||||||
- abidw $< >$@
|
|
||||||
+ $(Q)abidw $< >$@
|
|
||||||
|
|
||||||
%.abi: %.so
|
|
||||||
- abidw $< >$@
|
|
||||||
+ $(Q)abidw $< >$@
|
|
||||||
|
|
||||||
%-nv.version: %.version
|
|
||||||
@echo creating $@ from $<
|
|
||||||
diff --git a/kpartx/Makefile b/kpartx/Makefile
|
|
||||||
index 31b1138a..7720a740 100644
|
|
||||||
--- a/kpartx/Makefile
|
|
||||||
+++ b/kpartx/Makefile
|
|
||||||
@@ -16,33 +16,34 @@ OBJS := bsd.o dos.o kpartx.o solaris.o unixware.o dasd.o sun.o \
|
|
||||||
all: $(EXEC)
|
|
||||||
|
|
||||||
$(EXEC): $(OBJS)
|
|
||||||
- $(CC) $(CFLAGS) $(OBJS) -o $(EXEC) $(LDFLAGS) $(LIBDEPS)
|
|
||||||
+ @echo building $@ because of $?
|
|
||||||
+ $(Q)$(CC) $(CFLAGS) $(OBJS) -o $(EXEC) $(LDFLAGS) $(LIBDEPS)
|
|
||||||
|
|
||||||
install: $(EXEC) $(EXEC).8
|
|
||||||
- $(INSTALL_PROGRAM) -d $(DESTDIR)$(bindir)
|
|
||||||
- $(INSTALL_PROGRAM) -m 755 $(EXEC) $(DESTDIR)$(bindir)
|
|
||||||
- $(INSTALL_PROGRAM) -d $(DESTDIR)$(libudevdir)
|
|
||||||
- $(INSTALL_PROGRAM) -m 755 kpartx_id $(DESTDIR)$(libudevdir)
|
|
||||||
- $(INSTALL_PROGRAM) -d $(DESTDIR)$(libudevdir)/rules.d
|
|
||||||
- $(INSTALL_PROGRAM) -m 644 dm-parts.rules $(DESTDIR)$(libudevdir)/rules.d/11-dm-parts.rules
|
|
||||||
- $(INSTALL_PROGRAM) -m 644 kpartx.rules $(DESTDIR)$(libudevdir)/rules.d/66-kpartx.rules
|
|
||||||
- $(INSTALL_PROGRAM) -m 644 del-part-nodes.rules $(DESTDIR)$(libudevdir)/rules.d/68-del-part-nodes.rules
|
|
||||||
- $(INSTALL_PROGRAM) -d $(DESTDIR)$(mandir)/man8
|
|
||||||
- $(INSTALL_PROGRAM) -m 644 $(EXEC).8 $(DESTDIR)$(mandir)/man8
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -d $(DESTDIR)$(bindir)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 755 $(EXEC) $(DESTDIR)$(bindir)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -d $(DESTDIR)$(libudevdir)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 755 kpartx_id $(DESTDIR)$(libudevdir)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -d $(DESTDIR)$(libudevdir)/rules.d
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 644 dm-parts.rules $(DESTDIR)$(libudevdir)/rules.d/11-dm-parts.rules
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 644 kpartx.rules $(DESTDIR)$(libudevdir)/rules.d/66-kpartx.rules
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 644 del-part-nodes.rules $(DESTDIR)$(libudevdir)/rules.d/68-del-part-nodes.rules
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -d $(DESTDIR)$(mandir)/man8
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 644 $(EXEC).8 $(DESTDIR)$(mandir)/man8
|
|
||||||
|
|
||||||
uninstall:
|
|
||||||
- $(RM) $(DESTDIR)$(bindir)/$(EXEC)
|
|
||||||
- $(RM) $(DESTDIR)$(mandir)/man8/$(EXEC).8
|
|
||||||
- $(RM) $(DESTDIR)$(libudevdir)/kpartx_id
|
|
||||||
- $(RM) $(DESTDIR)$(libudevdir)/rules.d/11-dm-parts.rules
|
|
||||||
- $(RM) $(DESTDIR)$(libudevdir)/rules.d/66-kpartx.rules
|
|
||||||
- $(RM) $(DESTDIR)$(libudevdir)/rules.d/67-kpartx-compat.rules
|
|
||||||
- $(RM) $(DESTDIR)$(libudevdir)/rules.d/68-del-part-nodes.rules
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(bindir)/$(EXEC)
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(mandir)/man8/$(EXEC).8
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(libudevdir)/kpartx_id
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(libudevdir)/rules.d/11-dm-parts.rules
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(libudevdir)/rules.d/66-kpartx.rules
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(libudevdir)/rules.d/67-kpartx-compat.rules
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(libudevdir)/rules.d/68-del-part-nodes.rules
|
|
||||||
|
|
||||||
clean: dep_clean
|
|
||||||
- $(RM) core *.o $(EXEC)
|
|
||||||
+ $(Q)$(RM) core *.o $(EXEC)
|
|
||||||
|
|
||||||
include $(wildcard $(OBJS:.o=.d))
|
|
||||||
|
|
||||||
dep_clean:
|
|
||||||
- $(RM) $(OBJS:.o=.d)
|
|
||||||
+ $(Q)$(RM) $(OBJS:.o=.d)
|
|
||||||
diff --git a/libdmmp/Makefile b/libdmmp/Makefile
|
|
||||||
index 67b6f86f..7693facb 100644
|
|
||||||
--- a/libdmmp/Makefile
|
|
||||||
+++ b/libdmmp/Makefile
|
|
||||||
@@ -23,62 +23,62 @@ all: $(LIBS) doc
|
|
||||||
.PHONY: doc clean install uninstall check speed_test dep_clean
|
|
||||||
|
|
||||||
$(LIBS): $(OBJS)
|
|
||||||
- $(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ -o $@ $(OBJS) $(LIBDEPS)
|
|
||||||
+ $(Q)$(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ -o $@ $(OBJS) $(LIBDEPS)
|
|
||||||
|
|
||||||
$(DEVLIB): $(LIBS)
|
|
||||||
- $(LN) $(LIBS) $@
|
|
||||||
+ $(Q)$(LN) $(LIBS) $@
|
|
||||||
|
|
||||||
abi: $(DEVLIB:%.so=%.abi)
|
|
||||||
|
|
||||||
install:
|
|
||||||
- mkdir -p $(DESTDIR)$(usrlibdir)
|
|
||||||
- $(INSTALL_PROGRAM) -m 755 $(LIBS) $(DESTDIR)$(usrlibdir)/$(LIBS)
|
|
||||||
- $(INSTALL_PROGRAM) -m 644 -D \
|
|
||||||
+ @mkdir -p $(DESTDIR)$(usrlibdir)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 755 $(LIBS) $(DESTDIR)$(usrlibdir)/$(LIBS)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 644 -D \
|
|
||||||
$(HEADERS) $(DESTDIR)$(includedir)/$(HEADERS)
|
|
||||||
- $(LN) $(LIBS) $(DESTDIR)$(usrlibdir)/$(DEVLIB)
|
|
||||||
- $(INSTALL_PROGRAM) -m 644 -D \
|
|
||||||
+ $(Q)$(LN) $(LIBS) $(DESTDIR)$(usrlibdir)/$(DEVLIB)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 644 -D \
|
|
||||||
$(PKGFILE).in $(DESTDIR)$(pkgconfdir)/$(PKGFILE)
|
|
||||||
- perl -i -pe 's|__VERSION__|$(LIBDMMP_VERSION)|g' \
|
|
||||||
+ $(Q)perl -i -pe 's|__VERSION__|$(LIBDMMP_VERSION)|g' \
|
|
||||||
$(DESTDIR)$(pkgconfdir)/$(PKGFILE)
|
|
||||||
- perl -i -pe 's|__LIBDIR__|$(usrlibdir)|g' \
|
|
||||||
+ $(Q)perl -i -pe 's|__LIBDIR__|$(usrlibdir)|g' \
|
|
||||||
$(DESTDIR)$(pkgconfdir)/$(PKGFILE)
|
|
||||||
- perl -i -pe 's|__INCLUDEDIR__|$(includedir)|g' \
|
|
||||||
+ $(Q)perl -i -pe 's|__INCLUDEDIR__|$(includedir)|g' \
|
|
||||||
$(DESTDIR)$(pkgconfdir)/$(PKGFILE)
|
|
||||||
- $(INSTALL_PROGRAM) -d 755 $(DESTDIR)$(mandir)/man3
|
|
||||||
- $(INSTALL_PROGRAM) -m 644 -t $(DESTDIR)$(mandir)/man3 docs/man/*.3
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -d 755 $(DESTDIR)$(mandir)/man3
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 644 -t $(DESTDIR)$(mandir)/man3 docs/man/*.3
|
|
||||||
|
|
||||||
uninstall:
|
|
||||||
- $(RM) $(DESTDIR)$(usrlibdir)/$(LIBS)
|
|
||||||
- $(RM) $(DESTDIR)$(includedir)/$(HEADERS)
|
|
||||||
- $(RM) $(DESTDIR)$(usrlibdir)/$(DEVLIB)
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(usrlibdir)/$(LIBS)
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(includedir)/$(HEADERS)
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(usrlibdir)/$(DEVLIB)
|
|
||||||
@for file in $(DESTDIR)$(mandir)/man3/dmmp_*; do \
|
|
||||||
$(RM) $$file; \
|
|
||||||
done
|
|
||||||
- $(RM) $(DESTDIR)$(mandir)/man3/libdmmp.h*
|
|
||||||
- $(RM) $(DESTDIR)$(pkgconfdir)/$(PKGFILE)
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(mandir)/man3/libdmmp.h*
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(pkgconfdir)/$(PKGFILE)
|
|
||||||
|
|
||||||
clean: dep_clean
|
|
||||||
- $(RM) core *.a *.o *.so *.so.* *.abi $(NV_VERSION_SCRIPT)
|
|
||||||
- $(MAKE) -C test clean
|
|
||||||
+ $(Q)$(RM) core *.a *.o *.so *.so.* *.abi $(NV_VERSION_SCRIPT)
|
|
||||||
+ @$(MAKE) -C test clean
|
|
||||||
|
|
||||||
include $(wildcard $(OBJS:.o=.d))
|
|
||||||
|
|
||||||
check: all
|
|
||||||
- $(MAKE) -C test check
|
|
||||||
+ @$(MAKE) -C test check
|
|
||||||
|
|
||||||
speed_test: all
|
|
||||||
- $(MAKE) -C test speed_test
|
|
||||||
+ @$(MAKE) -C test speed_test
|
|
||||||
|
|
||||||
doc: docs/man/dmmp_strerror.3
|
|
||||||
|
|
||||||
docs/man/dmmp_strerror.3: $(HEADERS)
|
|
||||||
- TEMPFILE=$(shell mktemp); \
|
|
||||||
+ $(Q)TEMPFILE=$(shell mktemp); \
|
|
||||||
cat $^ | perl docs/doc-preclean.pl >$$TEMPFILE; \
|
|
||||||
LC_ALL=C \
|
|
||||||
KBUILD_BUILD_TIMESTAMP=`git log -n1 --pretty=%cd --date=iso -- $^` \
|
|
||||||
perl docs/kernel-doc -man $$TEMPFILE | \
|
|
||||||
perl docs/split-man.pl docs/man; \
|
|
||||||
- rm -f $$TEMPFILE
|
|
||||||
+ $(RM) -f $$TEMPFILE
|
|
||||||
|
|
||||||
dep_clean:
|
|
||||||
- $(RM) $(OBJS:.o=.d)
|
|
||||||
+ $(Q)$(RM) $(OBJS:.o=.d)
|
|
||||||
diff --git a/libdmmp/test/Makefile b/libdmmp/test/Makefile
|
|
||||||
index 93de64a0..9d0817c8 100644
|
|
||||||
--- a/libdmmp/test/Makefile
|
|
||||||
+++ b/libdmmp/test/Makefile
|
|
||||||
@@ -16,7 +16,7 @@ LDFLAGS += -L$(_libdmmpdir) -ldmmp
|
|
||||||
all: $(TEST_EXEC) $(SPD_TEST_EXEC)
|
|
||||||
|
|
||||||
check: $(TEST_EXEC) $(SPD_TEST_EXEC)
|
|
||||||
- sudo env LD_LIBRARY_PATH=$(_libdmmpdir):$(_mpathcmddir) \
|
|
||||||
+ $(Q)sudo env LD_LIBRARY_PATH=$(_libdmmpdir):$(_mpathcmddir) \
|
|
||||||
valgrind --quiet --leak-check=full \
|
|
||||||
--show-reachable=no --show-possibly-lost=no \
|
|
||||||
--trace-children=yes --error-exitcode=1 \
|
|
||||||
@@ -24,15 +24,15 @@ check: $(TEST_EXEC) $(SPD_TEST_EXEC)
|
|
||||||
$(MAKE) speed_test
|
|
||||||
|
|
||||||
speed_test: $(SPD_TEST_EXEC)
|
|
||||||
- sudo env LD_LIBRARY_PATH=$(_libdmmpdir):$(_mpathcmddir) \
|
|
||||||
+ $(Q)sudo env LD_LIBRARY_PATH=$(_libdmmpdir):$(_mpathcmddir) \
|
|
||||||
time -p ./$(SPD_TEST_EXEC)
|
|
||||||
|
|
||||||
clean: dep_clean
|
|
||||||
- rm -f $(TEST_EXEC) $(SPD_TEST_EXEC)
|
|
||||||
+ $(Q)$(RM) -f $(TEST_EXEC) $(SPD_TEST_EXEC)
|
|
||||||
|
|
||||||
OBJS = $(TEST_EXEC).o $(SPD_TEST_EXEC).o
|
|
||||||
include $(wildcard $(OBJS:.o=.d))
|
|
||||||
|
|
||||||
|
|
||||||
dep_clean:
|
|
||||||
- $(RM) $(OBJS:.o=.d)
|
|
||||||
+ $(Q)$(RM) $(OBJS:.o=.d)
|
|
||||||
diff --git a/libmpathcmd/Makefile b/libmpathcmd/Makefile
|
|
||||||
index cfb202b8..be615c2f 100644
|
|
||||||
--- a/libmpathcmd/Makefile
|
|
||||||
+++ b/libmpathcmd/Makefile
|
|
||||||
@@ -9,22 +9,22 @@ all: $(DEVLIB)
|
|
||||||
include $(TOPDIR)/rules.mk
|
|
||||||
|
|
||||||
install: all
|
|
||||||
- $(INSTALL_PROGRAM) -d $(DESTDIR)$(syslibdir)
|
|
||||||
- $(INSTALL_PROGRAM) -m 755 $(LIBS) $(DESTDIR)$(syslibdir)/$(LIBS)
|
|
||||||
- $(LN) $(LIBS) $(DESTDIR)$(syslibdir)/$(DEVLIB)
|
|
||||||
- $(INSTALL_PROGRAM) -d $(DESTDIR)$(includedir)
|
|
||||||
- $(INSTALL_PROGRAM) -m 644 mpath_cmd.h $(DESTDIR)$(includedir)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -d $(DESTDIR)$(syslibdir)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 755 $(LIBS) $(DESTDIR)$(syslibdir)/$(LIBS)
|
|
||||||
+ $(Q)$(LN) $(LIBS) $(DESTDIR)$(syslibdir)/$(DEVLIB)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -d $(DESTDIR)$(includedir)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 644 mpath_cmd.h $(DESTDIR)$(includedir)
|
|
||||||
|
|
||||||
uninstall:
|
|
||||||
- $(RM) $(DESTDIR)$(syslibdir)/$(LIBS)
|
|
||||||
- $(RM) $(DESTDIR)$(syslibdir)/$(DEVLIB)
|
|
||||||
- $(RM) $(DESTDIR)$(includedir)/mpath_cmd.h
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(syslibdir)/$(LIBS)
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(syslibdir)/$(DEVLIB)
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(includedir)/mpath_cmd.h
|
|
||||||
|
|
||||||
clean: dep_clean
|
|
||||||
- $(RM) core *.a *.o *.so *.so.* *.abi $(NV_VERSION_SCRIPT)
|
|
||||||
+ $(Q)$(RM) core *.a *.o *.so *.so.* *.abi $(NV_VERSION_SCRIPT)
|
|
||||||
|
|
||||||
include $(wildcard $(OBJS:.o=.d))
|
|
||||||
|
|
||||||
|
|
||||||
dep_clean:
|
|
||||||
- $(RM) $(OBJS:.o=.d)
|
|
||||||
+ $(Q)$(RM) $(OBJS:.o=.d)
|
|
||||||
diff --git a/libmpathpersist/Makefile b/libmpathpersist/Makefile
|
|
||||||
index 94672556..8f9a43f6 100644
|
|
||||||
--- a/libmpathpersist/Makefile
|
|
||||||
+++ b/libmpathpersist/Makefile
|
|
||||||
@@ -12,28 +12,28 @@ all: $(DEVLIB)
|
|
||||||
include $(TOPDIR)/rules.mk
|
|
||||||
|
|
||||||
install: all
|
|
||||||
- $(INSTALL_PROGRAM) -d $(DESTDIR)$(syslibdir)
|
|
||||||
- $(INSTALL_PROGRAM) -m 755 $(LIBS) $(DESTDIR)$(syslibdir)/$(LIBS)
|
|
||||||
- $(INSTALL_PROGRAM) -m 755 -d $(DESTDIR)$(syslibdir)
|
|
||||||
- $(INSTALL_PROGRAM) -m 755 -d $(DESTDIR)$(mandir)/man3
|
|
||||||
- $(INSTALL_PROGRAM) -m 755 -d $(DESTDIR)$(includedir)
|
|
||||||
- $(LN) $(LIBS) $(DESTDIR)$(syslibdir)/$(DEVLIB)
|
|
||||||
- $(INSTALL_PROGRAM) -m 644 mpath_persistent_reserve_in.3 $(DESTDIR)$(mandir)/man3
|
|
||||||
- $(INSTALL_PROGRAM) -m 644 mpath_persistent_reserve_out.3 $(DESTDIR)$(mandir)/man3
|
|
||||||
- $(INSTALL_PROGRAM) -m 644 mpath_persist.h $(DESTDIR)$(includedir)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -d $(DESTDIR)$(syslibdir)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 755 $(LIBS) $(DESTDIR)$(syslibdir)/$(LIBS)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 755 -d $(DESTDIR)$(syslibdir)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 755 -d $(DESTDIR)$(mandir)/man3
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 755 -d $(DESTDIR)$(includedir)
|
|
||||||
+ $(Q)$(LN) $(LIBS) $(DESTDIR)$(syslibdir)/$(DEVLIB)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 644 mpath_persistent_reserve_in.3 $(DESTDIR)$(mandir)/man3
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 644 mpath_persistent_reserve_out.3 $(DESTDIR)$(mandir)/man3
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 644 mpath_persist.h $(DESTDIR)$(includedir)
|
|
||||||
|
|
||||||
uninstall:
|
|
||||||
- $(RM) $(DESTDIR)$(syslibdir)/$(LIBS)
|
|
||||||
- $(RM) $(DESTDIR)$(mandir)/man3/mpath_persistent_reserve_in.3
|
|
||||||
- $(RM) $(DESTDIR)$(mandir)/man3/mpath_persistent_reserve_out.3
|
|
||||||
- $(RM) $(DESTDIR)$(includedir)/mpath_persist.h
|
|
||||||
- $(RM) $(DESTDIR)$(syslibdir)/$(DEVLIB)
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(syslibdir)/$(LIBS)
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(mandir)/man3/mpath_persistent_reserve_in.3
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(mandir)/man3/mpath_persistent_reserve_out.3
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(includedir)/mpath_persist.h
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(syslibdir)/$(DEVLIB)
|
|
||||||
|
|
||||||
clean: dep_clean
|
|
||||||
- $(RM) core *.a *.o *.so *.so.* *.abi $(NV_VERSION_SCRIPT)
|
|
||||||
+ $(Q)$(RM) core *.a *.o *.so *.so.* *.abi $(NV_VERSION_SCRIPT)
|
|
||||||
|
|
||||||
include $(wildcard $(OBJS:.o=.d))
|
|
||||||
|
|
||||||
|
|
||||||
dep_clean:
|
|
||||||
- $(RM) $(OBJS:.o=.d)
|
|
||||||
+ $(Q)$(RM) $(OBJS:.o=.d)
|
|
||||||
diff --git a/libmpathutil/Makefile b/libmpathutil/Makefile
|
|
||||||
index 5ab33c09..f059de14 100644
|
|
||||||
--- a/libmpathutil/Makefile
|
|
||||||
+++ b/libmpathutil/Makefile
|
|
||||||
@@ -20,18 +20,18 @@ all: $(DEVLIB)
|
|
||||||
include $(TOPDIR)/rules.mk
|
|
||||||
|
|
||||||
install: all
|
|
||||||
- $(INSTALL_PROGRAM) -d $(DESTDIR)$(syslibdir)
|
|
||||||
- $(INSTALL_PROGRAM) -m 755 $(LIBS) $(DESTDIR)$(syslibdir)/$(LIBS)
|
|
||||||
- $(LN) $(LIBS) $(DESTDIR)$(syslibdir)/$(DEVLIB)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -d $(DESTDIR)$(syslibdir)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 755 $(LIBS) $(DESTDIR)$(syslibdir)/$(LIBS)
|
|
||||||
+ $(Q)$(LN) $(LIBS) $(DESTDIR)$(syslibdir)/$(DEVLIB)
|
|
||||||
|
|
||||||
uninstall:
|
|
||||||
- $(RM) $(DESTDIR)$(syslibdir)/$(LIBS)
|
|
||||||
- $(RM) $(DESTDIR)$(syslibdir)/$(DEVLIB)
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(syslibdir)/$(LIBS)
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(syslibdir)/$(DEVLIB)
|
|
||||||
|
|
||||||
clean: dep_clean
|
|
||||||
- $(RM) core *.a *.o *.so *.so.* *.abi nvme-ioctl.c nvme-ioctl.h $(NV_VERSION_SCRIPT)
|
|
||||||
+ $(Q)$(RM) core *.a *.o *.so *.so.* *.abi nvme-ioctl.c nvme-ioctl.h $(NV_VERSION_SCRIPT)
|
|
||||||
|
|
||||||
include $(wildcard $(OBJS:.o=.d))
|
|
||||||
|
|
||||||
dep_clean:
|
|
||||||
- $(RM) $(OBJS:.o=.d)
|
|
||||||
+ $(Q)$(RM) $(OBJS:.o=.d)
|
|
||||||
diff --git a/libmpathvalid/Makefile b/libmpathvalid/Makefile
|
|
||||||
index 88034df3..791a0398 100644
|
|
||||||
--- a/libmpathvalid/Makefile
|
|
||||||
+++ b/libmpathvalid/Makefile
|
|
||||||
@@ -13,21 +13,21 @@ all: $(DEVLIB)
|
|
||||||
include $(TOPDIR)/rules.mk
|
|
||||||
|
|
||||||
install: $(LIBS)
|
|
||||||
- $(INSTALL_PROGRAM) -m 755 -d $(DESTDIR)$(syslibdir)
|
|
||||||
- $(INSTALL_PROGRAM) -m 755 $(LIBS) $(DESTDIR)$(syslibdir)/$(LIBS)
|
|
||||||
- $(LN) $(LIBS) $(DESTDIR)$(syslibdir)/$(DEVLIB)
|
|
||||||
- $(INSTALL_PROGRAM) -m 755 -d $(DESTDIR)$(includedir)
|
|
||||||
- $(INSTALL_PROGRAM) -m 644 mpath_valid.h $(DESTDIR)$(includedir)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 755 -d $(DESTDIR)$(syslibdir)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 755 $(LIBS) $(DESTDIR)$(syslibdir)/$(LIBS)
|
|
||||||
+ $(Q)$(LN) $(LIBS) $(DESTDIR)$(syslibdir)/$(DEVLIB)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 755 -d $(DESTDIR)$(includedir)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 644 mpath_valid.h $(DESTDIR)$(includedir)
|
|
||||||
|
|
||||||
uninstall:
|
|
||||||
- $(RM) $(DESTDIR)$(syslibdir)/$(LIBS)
|
|
||||||
- $(RM) $(DESTDIR)$(syslibdir)/$(DEVLIB)
|
|
||||||
- $(RM) $(DESTDIR)$(includedir)/mpath_valid.h
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(syslibdir)/$(LIBS)
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(syslibdir)/$(DEVLIB)
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(includedir)/mpath_valid.h
|
|
||||||
|
|
||||||
clean: dep_clean
|
|
||||||
- $(RM) core *.a *.o *.so *.so.* *.abi $(NV_VERSION_SCRIPT)
|
|
||||||
+ $(Q)$(RM) core *.a *.o *.so *.so.* *.abi $(NV_VERSION_SCRIPT)
|
|
||||||
|
|
||||||
include $(wildcard $(OBJS:.o=.d))
|
|
||||||
|
|
||||||
dep_clean:
|
|
||||||
- $(RM) $(OBJS:.o=.d)
|
|
||||||
+ $(Q)$(RM) $(OBJS:.o=.d)
|
|
||||||
diff --git a/libmultipath/Makefile b/libmultipath/Makefile
|
|
||||||
index 1cc13577..3df851e2 100644
|
|
||||||
--- a/libmultipath/Makefile
|
|
||||||
+++ b/libmultipath/Makefile
|
|
||||||
@@ -31,47 +31,47 @@ all: $(DEVLIB)
|
|
||||||
include $(TOPDIR)/rules.mk
|
|
||||||
|
|
||||||
nvme-lib.o: nvme-lib.c nvme-ioctl.c nvme-ioctl.h
|
|
||||||
- $(CC) $(CPPFLAGS) $(CFLAGS) -Wno-unused-function -c -o $@ $<
|
|
||||||
+ $(Q)$(CC) $(CPPFLAGS) $(CFLAGS) -Wno-unused-function -c -o $@ $<
|
|
||||||
|
|
||||||
# there are lots of "unused parameters" in dict.c
|
|
||||||
# because not all handler / snprint methods need all parameters
|
|
||||||
dict.o: dict.c
|
|
||||||
- $(CC) $(CPPFLAGS) $(CFLAGS) -Wno-unused-parameter -c -o $@ $<
|
|
||||||
+ $(Q)$(CC) $(CPPFLAGS) $(CFLAGS) -Wno-unused-parameter -c -o $@ $<
|
|
||||||
|
|
||||||
make_static = $(shell sed '/^static/!s/^\([a-z]\{1,\} \)/static \1/' <$1 >$2)
|
|
||||||
|
|
||||||
nvme-ioctl.c: nvme/nvme-ioctl.c
|
|
||||||
- $(call make_static,$<,$@)
|
|
||||||
+ $(Q)$(call make_static,$<,$@)
|
|
||||||
|
|
||||||
nvme-ioctl.h: nvme/nvme-ioctl.h
|
|
||||||
- $(call make_static,$<,$@)
|
|
||||||
+ $(Q)$(call make_static,$<,$@)
|
|
||||||
|
|
||||||
../tests/$(LIBS): $(OBJS-O) $(OBJS-T) $(VERSION_SCRIPT)
|
|
||||||
- $(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=`basename $@` \
|
|
||||||
+ $(Q)$(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=`basename $@` \
|
|
||||||
-o $@ $(OBJS-O) $(OBJS-T) $(LIBDEPS)
|
|
||||||
- $(LN) $@ ${@:.so.0=.so}
|
|
||||||
+ $(Q)$(LN) $@ ${@:.so.0=.so}
|
|
||||||
|
|
||||||
# This rule is invoked from tests/Makefile, overriding configdir and plugindir
|
|
||||||
%-test.o: %.c
|
|
||||||
@echo building $@ because of $?
|
|
||||||
- $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
|
|
||||||
+ $(Q)$(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
|
|
||||||
|
|
||||||
test-lib: ../tests/$(LIBS)
|
|
||||||
|
|
||||||
install: all
|
|
||||||
- $(INSTALL_PROGRAM) -d $(DESTDIR)$(syslibdir)
|
|
||||||
- $(INSTALL_PROGRAM) -m 755 $(LIBS) $(DESTDIR)$(syslibdir)/$(LIBS)
|
|
||||||
- $(INSTALL_PROGRAM) -m 755 -d $(DESTDIR)$(plugindir)
|
|
||||||
- $(LN) $(LIBS) $(DESTDIR)$(syslibdir)/$(DEVLIB)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -d $(DESTDIR)$(syslibdir)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 755 $(LIBS) $(DESTDIR)$(syslibdir)/$(LIBS)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 755 -d $(DESTDIR)$(plugindir)
|
|
||||||
+ $(Q)$(LN) $(LIBS) $(DESTDIR)$(syslibdir)/$(DEVLIB)
|
|
||||||
|
|
||||||
uninstall:
|
|
||||||
- $(RM) $(DESTDIR)$(syslibdir)/$(LIBS)
|
|
||||||
- $(RM) $(DESTDIR)$(syslibdir)/$(DEVLIB)
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(syslibdir)/$(LIBS)
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(syslibdir)/$(DEVLIB)
|
|
||||||
|
|
||||||
clean: dep_clean
|
|
||||||
- $(RM) core *.a *.o *.so *.so.* *.abi nvme-ioctl.c nvme-ioctl.h autoconfig.h $(NV_VERSION_SCRIPT)
|
|
||||||
+ $(Q)$(RM) core *.a *.o *.so *.so.* *.abi nvme-ioctl.c nvme-ioctl.h autoconfig.h $(NV_VERSION_SCRIPT)
|
|
||||||
|
|
||||||
include $(wildcard $(OBJS:.o=.d))
|
|
||||||
|
|
||||||
dep_clean:
|
|
||||||
- $(RM) $(OBJS:.o=.d)
|
|
||||||
+ $(Q)$(RM) $(OBJS:.o=.d)
|
|
||||||
diff --git a/libmultipath/checkers/Makefile b/libmultipath/checkers/Makefile
|
|
||||||
index 39ad76e0..b3120611 100644
|
|
||||||
--- a/libmultipath/checkers/Makefile
|
|
||||||
+++ b/libmultipath/checkers/Makefile
|
|
||||||
@@ -22,16 +22,16 @@ LIBS= \
|
|
||||||
all: $(LIBS)
|
|
||||||
|
|
||||||
libcheck%.so: %.o
|
|
||||||
- $(CC) $(LDFLAGS) $(SHARED_FLAGS) -o $@ $^ $(LIBDEPS)
|
|
||||||
+ $(Q)$(CC) $(LDFLAGS) $(SHARED_FLAGS) -o $@ $^ $(LIBDEPS)
|
|
||||||
|
|
||||||
install:
|
|
||||||
- $(INSTALL_PROGRAM) -m 755 $(LIBS) $(DESTDIR)$(plugindir)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 755 $(LIBS) $(DESTDIR)$(plugindir)
|
|
||||||
|
|
||||||
uninstall:
|
|
||||||
for file in $(LIBS); do $(RM) $(DESTDIR)$(plugindir)/$$file; done
|
|
||||||
|
|
||||||
clean: dep_clean
|
|
||||||
- $(RM) core *.a *.o *.gz *.so
|
|
||||||
+ $(Q)$(RM) core *.a *.o *.gz *.so
|
|
||||||
|
|
||||||
OBJS := $(LIBS:libcheck%.so=%.o)
|
|
||||||
.SECONDARY: $(OBJS)
|
|
||||||
@@ -39,4 +39,4 @@ OBJS := $(LIBS:libcheck%.so=%.o)
|
|
||||||
include $(wildcard $(OBJS:.o=.d))
|
|
||||||
|
|
||||||
dep_clean:
|
|
||||||
- $(RM) $(OBJS:.o=.d)
|
|
||||||
+ $(Q)$(RM) $(OBJS:.o=.d)
|
|
||||||
diff --git a/libmultipath/foreign/Makefile b/libmultipath/foreign/Makefile
|
|
||||||
index 8bf9047b..0e245d6f 100644
|
|
||||||
--- a/libmultipath/foreign/Makefile
|
|
||||||
+++ b/libmultipath/foreign/Makefile
|
|
||||||
@@ -14,16 +14,16 @@ LIBS = libforeign-nvme.so
|
|
||||||
all: $(LIBS)
|
|
||||||
|
|
||||||
libforeign-%.so: %.o
|
|
||||||
- $(CC) $(LDFLAGS) $(SHARED_FLAGS) -o $@ $^ $(LIBDEPS)
|
|
||||||
+ $(Q)$(CC) $(LDFLAGS) $(SHARED_FLAGS) -o $@ $^ $(LIBDEPS)
|
|
||||||
|
|
||||||
install:
|
|
||||||
- $(INSTALL_PROGRAM) -m 755 $(LIBS) $(DESTDIR)$(plugindir)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 755 $(LIBS) $(DESTDIR)$(plugindir)
|
|
||||||
|
|
||||||
uninstall:
|
|
||||||
for file in $(LIBS); do $(RM) $(DESTDIR)$(plugindir)/$$file; done
|
|
||||||
|
|
||||||
clean: dep_clean
|
|
||||||
- $(RM) core *.a *.o *.gz *.so
|
|
||||||
+ $(Q)$(RM) core *.a *.o *.gz *.so
|
|
||||||
|
|
||||||
OBJS := $(LIBS:libforeign-%.so=%.o)
|
|
||||||
.SECONDARY: $(OBJS)
|
|
||||||
@@ -31,4 +31,4 @@ OBJS := $(LIBS:libforeign-%.so=%.o)
|
|
||||||
include $(wildcard $(OBJS:.o=.d))
|
|
||||||
|
|
||||||
dep_clean:
|
|
||||||
- $(RM) $(OBJS:.o=.d)
|
|
||||||
+ $(Q)$(RM) $(OBJS:.o=.d)
|
|
||||||
diff --git a/libmultipath/prioritizers/Makefile b/libmultipath/prioritizers/Makefile
|
|
||||||
index a699e8a6..e1688163 100644
|
|
||||||
--- a/libmultipath/prioritizers/Makefile
|
|
||||||
+++ b/libmultipath/prioritizers/Makefile
|
|
||||||
@@ -34,16 +34,16 @@ endif
|
|
||||||
all: $(LIBS)
|
|
||||||
|
|
||||||
libprio%.so: %.o
|
|
||||||
- $(CC) $(LDFLAGS) $(SHARED_FLAGS) -o $@ $^ $(LIBDEPS)
|
|
||||||
+ $(Q)$(CC) $(LDFLAGS) $(SHARED_FLAGS) -o $@ $^ $(LIBDEPS)
|
|
||||||
|
|
||||||
install: $(LIBS)
|
|
||||||
- $(INSTALL_PROGRAM) -m 755 libprio*.so $(DESTDIR)$(plugindir)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 755 libprio*.so $(DESTDIR)$(plugindir)
|
|
||||||
|
|
||||||
uninstall:
|
|
||||||
for file in $(LIBS); do $(RM) $(DESTDIR)$(plugindir)/$$file; done
|
|
||||||
|
|
||||||
clean: dep_clean
|
|
||||||
- $(RM) core *.a *.o *.gz *.so
|
|
||||||
+ $(Q)$(RM) core *.a *.o *.gz *.so
|
|
||||||
|
|
||||||
OBJS = $(LIBS:libprio%.so=%.o) alua_rtpg.o
|
|
||||||
.SECONDARY: $(OBJS)
|
|
||||||
@@ -51,4 +51,4 @@ OBJS = $(LIBS:libprio%.so=%.o) alua_rtpg.o
|
|
||||||
include $(wildcard $(OBJS:.o=.d))
|
|
||||||
|
|
||||||
dep_clean:
|
|
||||||
- $(RM) $(OBJS:.o=.d)
|
|
||||||
+ $(Q)$(RM) $(OBJS:.o=.d)
|
|
||||||
diff --git a/mpathpersist/Makefile b/mpathpersist/Makefile
|
|
||||||
index d62537b5..f57c105c 100644
|
|
||||||
--- a/mpathpersist/Makefile
|
|
||||||
+++ b/mpathpersist/Makefile
|
|
||||||
@@ -14,22 +14,22 @@ OBJS = main.o
|
|
||||||
all: $(EXEC)
|
|
||||||
|
|
||||||
$(EXEC): $(OBJS)
|
|
||||||
- $(CC) $(OBJS) -o $(EXEC) $(LDFLAGS) $(CFLAGS) $(LIBDEPS)
|
|
||||||
+ $(Q)$(CC) $(OBJS) -o $(EXEC) $(LDFLAGS) $(CFLAGS) $(LIBDEPS)
|
|
||||||
|
|
||||||
install:
|
|
||||||
- $(INSTALL_PROGRAM) -d $(DESTDIR)$(bindir)
|
|
||||||
- $(INSTALL_PROGRAM) -m 755 $(EXEC) $(DESTDIR)$(bindir)/
|
|
||||||
- $(INSTALL_PROGRAM) -d $(DESTDIR)$(mandir)/man8
|
|
||||||
- $(INSTALL_PROGRAM) -m 644 $(EXEC).8 $(DESTDIR)$(mandir)/man8
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -d $(DESTDIR)$(bindir)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 755 $(EXEC) $(DESTDIR)$(bindir)/
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -d $(DESTDIR)$(mandir)/man8
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 644 $(EXEC).8 $(DESTDIR)$(mandir)/man8
|
|
||||||
|
|
||||||
clean: dep_clean
|
|
||||||
- $(RM) core *.o $(EXEC)
|
|
||||||
+ $(Q)$(RM) core *.o $(EXEC)
|
|
||||||
|
|
||||||
include $(wildcard $(OBJS:.o=.d))
|
|
||||||
|
|
||||||
uninstall:
|
|
||||||
- $(RM) $(DESTDIR)$(bindir)/$(EXEC)
|
|
||||||
- $(RM) $(DESTDIR)$(mandir)/man8/$(EXEC).8
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(bindir)/$(EXEC)
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(mandir)/man8/$(EXEC).8
|
|
||||||
|
|
||||||
dep_clean:
|
|
||||||
- $(RM) $(OBJS:.o=.d)
|
|
||||||
+ $(Q)$(RM) $(OBJS:.o=.d)
|
|
||||||
diff --git a/multipath/Makefile b/multipath/Makefile
|
|
||||||
index 7f7b341d..73db991a 100644
|
|
||||||
--- a/multipath/Makefile
|
|
||||||
+++ b/multipath/Makefile
|
|
||||||
@@ -16,44 +16,46 @@ OBJS := main.o
|
|
||||||
all: $(EXEC) multipath.rules tmpfiles.conf
|
|
||||||
|
|
||||||
$(EXEC): $(OBJS) $(multipathdir)/libmultipath.so $(mpathcmddir)/libmpathcmd.so
|
|
||||||
- $(CC) $(CFLAGS) $(OBJS) -o $(EXEC) $(LDFLAGS) $(LIBDEPS)
|
|
||||||
+ @echo building $@ because of $?
|
|
||||||
+ $(Q)$(CC) $(CFLAGS) $(OBJS) -o $(EXEC) $(LDFLAGS) $(LIBDEPS)
|
|
||||||
|
|
||||||
install:
|
|
||||||
- $(INSTALL_PROGRAM) -d $(DESTDIR)$(bindir)
|
|
||||||
- $(INSTALL_PROGRAM) -m 755 $(EXEC) $(DESTDIR)$(bindir)/
|
|
||||||
- $(INSTALL_PROGRAM) -d $(DESTDIR)$(udevrulesdir)
|
|
||||||
- $(INSTALL_PROGRAM) -m 644 11-dm-mpath.rules $(DESTDIR)$(udevrulesdir)
|
|
||||||
- $(INSTALL_PROGRAM) -m 644 multipath.rules $(DESTDIR)$(udevrulesdir)/56-multipath.rules
|
|
||||||
- $(INSTALL_PROGRAM) -d $(DESTDIR)$(modulesloaddir)
|
|
||||||
- $(INSTALL_PROGRAM) -m 644 modules-load.conf $(DESTDIR)$(modulesloaddir)/multipath.conf
|
|
||||||
- $(INSTALL_PROGRAM) -d $(DESTDIR)$(tmpfilesdir)
|
|
||||||
- $(INSTALL_PROGRAM) -m 644 tmpfiles.conf $(DESTDIR)$(tmpfilesdir)/multipath.conf
|
|
||||||
- $(INSTALL_PROGRAM) -d $(DESTDIR)$(mandir)/man8
|
|
||||||
- $(INSTALL_PROGRAM) -m 644 $(EXEC).8 $(DESTDIR)$(mandir)/man8
|
|
||||||
- $(INSTALL_PROGRAM) -d $(DESTDIR)$(mandir)/man5
|
|
||||||
- $(INSTALL_PROGRAM) -m 644 $(EXEC).conf.5 $(DESTDIR)$(mandir)/man5
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -d $(DESTDIR)$(bindir)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 755 $(EXEC) $(DESTDIR)$(bindir)/
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -d $(DESTDIR)$(udevrulesdir)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 644 11-dm-mpath.rules $(DESTDIR)$(udevrulesdir)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 644 multipath.rules $(DESTDIR)$(udevrulesdir)/56-multipath.rules
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -d $(DESTDIR)$(modulesloaddir)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 644 modules-load.conf $(DESTDIR)$(modulesloaddir)/multipath.conf
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -d $(DESTDIR)$(tmpfilesdir)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 644 tmpfiles.conf $(DESTDIR)$(tmpfilesdir)/multipath.conf
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -d $(DESTDIR)$(mandir)/man8
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 644 $(EXEC).8 $(DESTDIR)$(mandir)/man8
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -d $(DESTDIR)$(mandir)/man5
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 644 $(EXEC).conf.5 $(DESTDIR)$(mandir)/man5
|
|
||||||
ifneq ($(SCSI_DH_MODULES_PRELOAD),)
|
|
||||||
- $(INSTALL_PROGRAM) -m 644 scsi_dh.conf $(DESTDIR)$(modulesloaddir)/scsi_dh.conf
|
|
||||||
- for _x in $(SCSI_DH_MODULES_PRELOAD); do echo "$$_x"; done \
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 644 scsi_dh.conf $(DESTDIR)$(modulesloaddir)/scsi_dh.conf
|
|
||||||
+ $(Q)for _x in $(SCSI_DH_MODULES_PRELOAD); do echo "$$_x"; done \
|
|
||||||
>>$(DESTDIR)$(modulesloaddir)/scsi_dh.conf
|
|
||||||
endif
|
|
||||||
|
|
||||||
uninstall:
|
|
||||||
- $(RM) $(DESTDIR)$(bindir)/$(EXEC)
|
|
||||||
- $(RM) $(DESTDIR)$(udevrulesdir)/11-dm-mpath.rules
|
|
||||||
- $(RM) $(DESTDIR)$(modulesloaddir)/multipath.conf
|
|
||||||
- $(RM) $(DESTDIR)$(modulesloaddir)/scsi_dh.conf
|
|
||||||
- $(RM) $(DESTDIR)$(libudevdir)/rules.d/56-multipath.rules
|
|
||||||
- $(RM) $(DESTDIR)$(mandir)/man8/$(EXEC).8
|
|
||||||
- $(RM) $(DESTDIR)$(mandir)/man5/$(EXEC).conf.5
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(bindir)/$(EXEC)
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(udevrulesdir)/11-dm-mpath.rules
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(modulesloaddir)/multipath.conf
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(modulesloaddir)/scsi_dh.conf
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(libudevdir)/rules.d/56-multipath.rules
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(mandir)/man8/$(EXEC).8
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(mandir)/man5/$(EXEC).conf.5
|
|
||||||
|
|
||||||
clean: dep_clean
|
|
||||||
- $(RM) core *.o $(EXEC) multipath.rules tmpfiles.conf
|
|
||||||
+ $(Q)$(RM) core *.o $(EXEC) multipath.rules tmpfiles.conf
|
|
||||||
|
|
||||||
include $(wildcard $(OBJS:.o=.d))
|
|
||||||
|
|
||||||
dep_clean:
|
|
||||||
- $(RM) $(OBJS:.o=.d)
|
|
||||||
+ $(Q)$(RM) $(OBJS:.o=.d)
|
|
||||||
|
|
||||||
%: %.in
|
|
||||||
- sed 's,@RUNTIME_DIR@,$(runtimedir),' $< >$@
|
|
||||||
+ @echo creating $@
|
|
||||||
+ $(Q)sed 's,@RUNTIME_DIR@,$(runtimedir),' $< >$@
|
|
||||||
diff --git a/multipathd/Makefile b/multipathd/Makefile
|
|
||||||
index 587bb916..9d531329 100644
|
|
||||||
--- a/multipathd/Makefile
|
|
||||||
+++ b/multipathd/Makefile
|
|
||||||
@@ -45,41 +45,43 @@ endif
|
|
||||||
all : $(EXEC) $(CLI)
|
|
||||||
|
|
||||||
$(EXEC): $(OBJS) $(multipathdir)/libmultipath.so $(mpathcmddir)/libmpathcmd.so
|
|
||||||
- $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) -o $(EXEC) $(LIBDEPS)
|
|
||||||
+ @echo building $@ because of $?
|
|
||||||
+ $(Q)$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) -o $(EXEC) $(LIBDEPS)
|
|
||||||
|
|
||||||
multipathc.o: multipathc.c
|
|
||||||
- $(CC) $(CPPFLAGS) $(RL_CPPFLAGS) $(CFLAGS) -Wno-unused-parameter -c -o $@ $<
|
|
||||||
+ $(Q)$(CC) $(CPPFLAGS) $(RL_CPPFLAGS) $(CFLAGS) -Wno-unused-parameter -c -o $@ $<
|
|
||||||
|
|
||||||
$(CLI): $(CLI_OBJS)
|
|
||||||
- $(CC) $(CFLAGS) $(CLI_OBJS) $(LDFLAGS) -o $@ $(CLI_LIBDEPS) $(RL_LIBDEPS)
|
|
||||||
+ @echo building $@ because of $?
|
|
||||||
+ $(Q)$(CC) $(CFLAGS) $(CLI_OBJS) $(LDFLAGS) -o $@ $(CLI_LIBDEPS) $(RL_LIBDEPS)
|
|
||||||
|
|
||||||
cli_handlers.o: cli_handlers.c
|
|
||||||
- $(CC) $(CPPFLAGS) $(CFLAGS) -Wno-unused-parameter -c -o $@ $<
|
|
||||||
+ $(Q)$(CC) $(CPPFLAGS) $(CFLAGS) -Wno-unused-parameter -c -o $@ $<
|
|
||||||
|
|
||||||
install:
|
|
||||||
- $(INSTALL_PROGRAM) -d $(DESTDIR)$(bindir)
|
|
||||||
- $(INSTALL_PROGRAM) -m 755 $(EXEC) $(DESTDIR)$(bindir)
|
|
||||||
- $(INSTALL_PROGRAM) -m 755 $(CLI) $(DESTDIR)$(bindir)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -d $(DESTDIR)$(bindir)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 755 $(EXEC) $(DESTDIR)$(bindir)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 755 $(CLI) $(DESTDIR)$(bindir)
|
|
||||||
ifdef SYSTEMD
|
|
||||||
- $(INSTALL_PROGRAM) -d $(DESTDIR)$(unitdir)
|
|
||||||
- $(INSTALL_PROGRAM) -m 644 $(EXEC).service $(DESTDIR)$(unitdir)
|
|
||||||
- $(INSTALL_PROGRAM) -m 644 $(EXEC).socket $(DESTDIR)$(unitdir)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -d $(DESTDIR)$(unitdir)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 644 $(EXEC).service $(DESTDIR)$(unitdir)
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 644 $(EXEC).socket $(DESTDIR)$(unitdir)
|
|
||||||
endif
|
|
||||||
- $(INSTALL_PROGRAM) -d $(DESTDIR)$(mandir)/man8
|
|
||||||
- $(INSTALL_PROGRAM) -m 644 $(EXEC).8 $(DESTDIR)$(mandir)/man8
|
|
||||||
- $(INSTALL_PROGRAM) -m 644 $(CLI).8 $(DESTDIR)$(mandir)/man8
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -d $(DESTDIR)$(mandir)/man8
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 644 $(EXEC).8 $(DESTDIR)$(mandir)/man8
|
|
||||||
+ $(Q)$(INSTALL_PROGRAM) -m 644 $(CLI).8 $(DESTDIR)$(mandir)/man8
|
|
||||||
|
|
||||||
uninstall:
|
|
||||||
- $(RM) $(DESTDIR)$(bindir)/$(EXEC) $(DESTDIR)$(bindir)/$(CLI)
|
|
||||||
- $(RM) $(DESTDIR)$(mandir)/man8/$(EXEC).8
|
|
||||||
- $(RM) $(DESTDIR)$(mandir)/man8/$(CLI).8
|
|
||||||
- $(RM) $(DESTDIR)$(unitdir)/$(EXEC).service
|
|
||||||
- $(RM) $(DESTDIR)$(unitdir)/$(EXEC).socket
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(bindir)/$(EXEC) $(DESTDIR)$(bindir)/$(CLI)
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(mandir)/man8/$(EXEC).8
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(mandir)/man8/$(CLI).8
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(unitdir)/$(EXEC).service
|
|
||||||
+ $(Q)$(RM) $(DESTDIR)$(unitdir)/$(EXEC).socket
|
|
||||||
|
|
||||||
clean: dep_clean
|
|
||||||
- $(RM) core *.o $(EXEC) $(CLI)
|
|
||||||
+ $(Q)$(RM) core *.o $(EXEC) $(CLI)
|
|
||||||
|
|
||||||
include $(wildcard $(OBJS:.o=.d))
|
|
||||||
|
|
||||||
dep_clean:
|
|
||||||
- $(RM) $(OBJS:.o=.d)
|
|
||||||
+ $(Q)$(RM) $(OBJS:.o=.d)
|
|
||||||
diff --git a/rules.mk b/rules.mk
|
|
||||||
index d8612527..c3a8e7ac 100644
|
|
||||||
--- a/rules.mk
|
|
||||||
+++ b/rules.mk
|
|
||||||
@@ -2,17 +2,17 @@
|
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
|
|
||||||
$(DEVLIB): $(LIBS)
|
|
||||||
- $(LN) $(LIBS) $@
|
|
||||||
+ $(Q)$(LN) $(LIBS) $@
|
|
||||||
|
|
||||||
$(LIBS): $(OBJS) $(VERSION_SCRIPT)
|
|
||||||
- $(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ \
|
|
||||||
+ $(Q)$(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ \
|
|
||||||
-Wl,--version-script=$(VERSION_SCRIPT) -o $@ $(OBJS) $(LIBDEPS)
|
|
||||||
|
|
||||||
$(LIBS:%.so.$(SONAME)=%-nv.so): $(OBJS) $(NV_VERSION_SCRIPT)
|
|
||||||
- $(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ \
|
|
||||||
+ $(Q)$(CC) $(LDFLAGS) $(SHARED_FLAGS) -Wl,-soname=$@ \
|
|
||||||
-Wl,--version-script=$(NV_VERSION_SCRIPT) -o $@ $(OBJS) $(LIBDEPS)
|
|
||||||
|
|
||||||
abi: $(LIBS:%.so.$(SONAME)=%-nv.abi)
|
|
||||||
|
|
||||||
$(TOPDIR)/config.mk $(multipathdir)/autoconfig.h:
|
|
||||||
- $(MAKE) -C $(TOPDIR) -f create-config.mk
|
|
||||||
+ $(Q)$(MAKE) -C $(TOPDIR) -f create-config.mk
|
|
||||||
diff --git a/tests/Makefile b/tests/Makefile
|
|
||||||
index d9856d17..021da0b0 100644
|
|
||||||
--- a/tests/Makefile
|
|
||||||
+++ b/tests/Makefile
|
|
||||||
@@ -12,7 +12,6 @@ TESTS := uevent parser util dmevents hwtable blacklist unaligned vpd pgpolicy \
|
|
||||||
alias directio valid devt mpathvalid strbuf sysfs features cli
|
|
||||||
HELPERS := test-lib.o test-log.o
|
|
||||||
|
|
||||||
-.SILENT: $(TESTS:%=%.o)
|
|
||||||
.PRECIOUS: $(TESTS:%=%-test)
|
|
||||||
|
|
||||||
all: $(TESTS:%=%.out)
|
|
||||||
@@ -71,11 +70,12 @@ features-test_LIBDEPS := -ludev -lpthread
|
|
||||||
cli-test_OBJDEPS := $(daemondir)/cli.o
|
|
||||||
|
|
||||||
%.o: %.c
|
|
||||||
- $(CC) $(CPPFLAGS) $(CFLAGS) $($*-test_FLAGS) -c -o $@ $<
|
|
||||||
+ @echo building $@ because of $?
|
|
||||||
+ $(Q)$(CC) $(CPPFLAGS) $(CFLAGS) $($*-test_FLAGS) -c -o $@ $<
|
|
||||||
|
|
||||||
lib/libchecktur.so:
|
|
||||||
- mkdir -p lib
|
|
||||||
- cd lib && ln -s ../$(multipathdir)/*/*.so .
|
|
||||||
+ @mkdir -p lib
|
|
||||||
+ $(Q)cd lib && ln -s ../$(multipathdir)/*/*.so .
|
|
||||||
|
|
||||||
%.out: %-test lib/libchecktur.so
|
|
||||||
@echo == running $< ==
|
|
||||||
@@ -89,34 +89,35 @@ lib/libchecktur.so:
|
|
||||||
OBJS = $(TESTS:%=%.o) $(HELPERS)
|
|
||||||
|
|
||||||
test_clean:
|
|
||||||
- $(RM) $(TESTS:%=%.out) $(TESTS:%=%.vgr) *.so*
|
|
||||||
+ $(Q)$(RM) $(TESTS:%=%.out) $(TESTS:%=%.vgr) *.so*
|
|
||||||
|
|
||||||
valgrind_clean:
|
|
||||||
- $(RM) $(TESTS:%=%.vgr)
|
|
||||||
+ $(Q)$(RM) $(TESTS:%=%.vgr)
|
|
||||||
|
|
||||||
clean: test_clean valgrind_clean dep_clean
|
|
||||||
- $(RM) $(TESTS:%=%-test) $(OBJS) *.o.wrap
|
|
||||||
- $(RM) -rf lib conf.d
|
|
||||||
+ $(Q)$(RM) $(TESTS:%=%-test) $(OBJS) *.o.wrap
|
|
||||||
+ $(Q)$(RM) -rf lib conf.d
|
|
||||||
|
|
||||||
.SECONDARY: $(OBJS)
|
|
||||||
|
|
||||||
include $(wildcard $(OBJS:.o=.d))
|
|
||||||
|
|
||||||
dep_clean:
|
|
||||||
- $(RM) $(OBJS:.o=.d)
|
|
||||||
+ $(Q)$(RM) $(OBJS:.o=.d)
|
|
||||||
|
|
||||||
%.o.wrap: %.c
|
|
||||||
@sed -n 's/^.*__wrap_\([a-zA-Z0-9_]*\).*$$/-Wl,--wrap=\1/p' $< | \
|
|
||||||
sort -u | tr '\n' ' ' >$@
|
|
||||||
|
|
||||||
libmultipath.so.0: $(multipathdir)/libmultipath.so.0
|
|
||||||
- make -C $(multipathdir) configdir=$(TESTDIR)/conf.d plugindir=$(TESTDIR)/lib test-lib
|
|
||||||
+ @make -C $(multipathdir) configdir=$(TESTDIR)/conf.d plugindir=$(TESTDIR)/lib test-lib
|
|
||||||
|
|
||||||
# COLON will get expanded during second expansion below
|
|
||||||
COLON:=:
|
|
||||||
.SECONDEXPANSION:
|
|
||||||
%-test: %.o %.o.wrap $$($$@_OBJDEPS) $$($$@_TESTDEPS) $$($$@_TESTDEPS$$(COLON).o=.o.wrap) \
|
|
||||||
libmultipath.so.0 $(mpathutildir)/libmpathutil.so.0 $(mpathcmddir)/libmpathcmd.so.0 Makefile
|
|
||||||
- $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $< $($@_TESTDEPS) $($@_OBJDEPS) \
|
|
||||||
+ @echo building $@
|
|
||||||
+ $(Q)$(CC) $(CFLAGS) -o $@ $(LDFLAGS) $< $($@_TESTDEPS) $($@_OBJDEPS) \
|
|
||||||
$(LIBDEPS) $($@_LIBDEPS) \
|
|
||||||
$(shell cat $<.wrap) $(foreach dep,$($@_TESTDEPS),$(shell cat $(dep).wrap))
|
|
@ -11,7 +11,7 @@ Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
diff --git a/Makefile.inc b/Makefile.inc
|
diff --git a/Makefile.inc b/Makefile.inc
|
||||||
index e6e7f7d7..15f0b9f6 100644
|
index 748911e2..c07bcb0c 100644
|
||||||
--- a/Makefile.inc
|
--- a/Makefile.inc
|
||||||
+++ b/Makefile.inc
|
+++ b/Makefile.inc
|
||||||
@@ -16,7 +16,7 @@ READLINE :=
|
@@ -16,7 +16,7 @@ READLINE :=
|
@ -1,183 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Martin Wilck <mwilck@suse.com>
|
|
||||||
Date: Fri, 28 Oct 2022 14:39:22 +0200
|
|
||||||
Subject: [PATCH] multipath-tools: quiet build support for top-level Makefile
|
|
||||||
|
|
||||||
This requires including "Makefile.inc" in the top-level Makefile,
|
|
||||||
too.
|
|
||||||
|
|
||||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
|
||||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
---
|
|
||||||
Makefile | 32 ++++++++++++++++++------------
|
|
||||||
Makefile.inc | 8 ++++++--
|
|
||||||
create-config.mk | 1 -
|
|
||||||
libmultipath/checkers/Makefile | 2 +-
|
|
||||||
libmultipath/foreign/Makefile | 2 +-
|
|
||||||
libmultipath/prioritizers/Makefile | 2 +-
|
|
||||||
6 files changed, 28 insertions(+), 19 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/Makefile b/Makefile
|
|
||||||
index e3ce1a8d..b9e30234 100644
|
|
||||||
--- a/Makefile
|
|
||||||
+++ b/Makefile
|
|
||||||
@@ -2,6 +2,9 @@
|
|
||||||
# Copyright (C) 2003 Christophe Varoqui, <christophe.varoqui@opensvc.com>
|
|
||||||
#
|
|
||||||
|
|
||||||
+TOPDIR := .
|
|
||||||
+include Makefile.inc
|
|
||||||
+
|
|
||||||
LIB_BUILDDIRS := \
|
|
||||||
libmpathcmd \
|
|
||||||
libmpathutil \
|
|
||||||
@@ -32,10 +35,12 @@ all: $(BUILDDIRS)
|
|
||||||
|
|
||||||
config.mk libmultipath/autoconfig.h:
|
|
||||||
@$(MAKE) -f create-config.mk
|
|
||||||
+ifeq ($(V),1)
|
|
||||||
@echo ==== config.mk ====
|
|
||||||
@cat config.mk
|
|
||||||
@echo ==== autoconfig.h ====
|
|
||||||
@cat libmultipath/autoconfig.h
|
|
||||||
+endif
|
|
||||||
|
|
||||||
$(BUILDDIRS): config.mk
|
|
||||||
@$(MAKE) -C $@
|
|
||||||
@@ -48,11 +53,12 @@ $(LIB_BUILDDIRS:=.abi): $(LIB_BUILDDIRS)
|
|
||||||
# Requires abidw from the abigail suite (https://sourceware.org/libabigail/)
|
|
||||||
.PHONY: abi
|
|
||||||
abi: $(LIB_BUILDDIRS:=.abi)
|
|
||||||
+ @echo creating abi
|
|
||||||
@mkdir -p $@
|
|
||||||
- ln -ft $@ $(LIB_BUILDDIRS:=/*.abi)
|
|
||||||
+ $(Q)ln -ft $@ $(LIB_BUILDDIRS:=/*.abi)
|
|
||||||
|
|
||||||
abi.tar.gz: abi
|
|
||||||
- tar cfz $@ abi
|
|
||||||
+ $(Q)tar cfz $@ abi
|
|
||||||
|
|
||||||
# Check the ABI against a reference.
|
|
||||||
# This requires the ABI from a previous run to be present
|
|
||||||
@@ -77,8 +83,8 @@ abi-test: abi reference-abi $(wildcard abi/*.abi)
|
|
||||||
# Create compile_commands.json, useful for using clangd with an IDE
|
|
||||||
# Requires bear (https://github.com/rizsotto/Bear)
|
|
||||||
compile_commands.json: Makefile Makefile.inc $(BUILDDIRS:=/Makefile)
|
|
||||||
- $(MAKE) clean
|
|
||||||
- bear -- $(MAKE)
|
|
||||||
+ $(Q)$(MAKE) clean
|
|
||||||
+ $(Q)bear -- $(MAKE)
|
|
||||||
|
|
||||||
libmpathutil libdmmp: libmpathcmd
|
|
||||||
libmultipath: libmpathutil
|
|
||||||
@@ -103,24 +109,24 @@ $(BUILDDIRS:=.uninstall):
|
|
||||||
# build it. Both is undesirable. Avoid it by creating config.mk temporarily.
|
|
||||||
clean:
|
|
||||||
@touch config.mk
|
|
||||||
- $(MAKE) $(BUILDDIRS:=.clean) tests.clean || true
|
|
||||||
- rm -rf abi abi.tar.gz abi-test compile_commands.json config.mk
|
|
||||||
+ $(Q)$(MAKE) $(BUILDDIRS:=.clean) tests.clean || true
|
|
||||||
+ $(Q)$(RM) -r abi abi.tar.gz abi-test compile_commands.json config.mk
|
|
||||||
|
|
||||||
install: $(BUILDDIRS:=.install)
|
|
||||||
uninstall: $(BUILDDIRS:=.uninstall)
|
|
||||||
|
|
||||||
test-progs: all
|
|
||||||
- $(MAKE) -C tests progs
|
|
||||||
+ @$(MAKE) -C tests progs
|
|
||||||
|
|
||||||
test: all
|
|
||||||
- $(MAKE) -C tests all
|
|
||||||
+ @$(MAKE) -C tests all
|
|
||||||
|
|
||||||
valgrind-test: all
|
|
||||||
- $(MAKE) -C tests valgrind
|
|
||||||
+ @$(MAKE) -C tests valgrind
|
|
||||||
|
|
||||||
.PHONY: TAGS
|
|
||||||
TAGS:
|
|
||||||
- etags -a libmultipath/*.c
|
|
||||||
- etags -a libmultipath/*.h
|
|
||||||
- etags -a multipathd/*.c
|
|
||||||
- etags -a multipathd/*.h
|
|
||||||
+ @etags -a libmultipath/*.c
|
|
||||||
+ @etags -a libmultipath/*.h
|
|
||||||
+ @etags -a multipathd/*.c
|
|
||||||
+ @etags -a multipathd/*.h
|
|
||||||
diff --git a/Makefile.inc b/Makefile.inc
|
|
||||||
index 3e14cb8c..866ab274 100644
|
|
||||||
--- a/Makefile.inc
|
|
||||||
+++ b/Makefile.inc
|
|
||||||
@@ -27,7 +27,7 @@ PKGCONFIG ?= pkg-config
|
|
||||||
ifeq ($(TOPDIR),)
|
|
||||||
TOPDIR = ..
|
|
||||||
endif
|
|
||||||
-ifneq ($(CREATE_CONFIG),1)
|
|
||||||
+ifneq ($(TOPDIR),.)
|
|
||||||
include $(TOPDIR)/config.mk
|
|
||||||
endif
|
|
||||||
|
|
||||||
@@ -60,7 +60,11 @@ devmapper_incdir := $(or $(shell $(PKGCONFIG) --variable=includedir devmapper),/
|
|
||||||
libudev_incdir := $(or $(shell $(PKGCONFIG) --variable=includedir libudev),/usr/include)
|
|
||||||
kernel_incdir := /usr/include
|
|
||||||
|
|
||||||
-Q := $(if $(V),,@)
|
|
||||||
+ifeq ($(V),)
|
|
||||||
+Q := @
|
|
||||||
+# make's "Entering directory" messages are confusing in parallel mode
|
|
||||||
+#MAKEFLAGS = --no-print-directory
|
|
||||||
+endif
|
|
||||||
|
|
||||||
GZIP_PROG := gzip -9 -c
|
|
||||||
RM := rm -f
|
|
||||||
diff --git a/create-config.mk b/create-config.mk
|
|
||||||
index 2cc5284f..434dee06 100644
|
|
||||||
--- a/create-config.mk
|
|
||||||
+++ b/create-config.mk
|
|
||||||
@@ -2,7 +2,6 @@
|
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
|
|
||||||
TOPDIR := .
|
|
||||||
-CREATE_CONFIG := 1
|
|
||||||
include $(TOPDIR)/Makefile.inc
|
|
||||||
|
|
||||||
# Check whether a function with name $1 has been declared in header file $2.
|
|
||||||
diff --git a/libmultipath/checkers/Makefile b/libmultipath/checkers/Makefile
|
|
||||||
index b3120611..6f7cfb95 100644
|
|
||||||
--- a/libmultipath/checkers/Makefile
|
|
||||||
+++ b/libmultipath/checkers/Makefile
|
|
||||||
@@ -28,7 +28,7 @@ install:
|
|
||||||
$(Q)$(INSTALL_PROGRAM) -m 755 $(LIBS) $(DESTDIR)$(plugindir)
|
|
||||||
|
|
||||||
uninstall:
|
|
||||||
- for file in $(LIBS); do $(RM) $(DESTDIR)$(plugindir)/$$file; done
|
|
||||||
+ $(Q)for file in $(LIBS); do $(RM) $(DESTDIR)$(plugindir)/$$file; done
|
|
||||||
|
|
||||||
clean: dep_clean
|
|
||||||
$(Q)$(RM) core *.a *.o *.gz *.so
|
|
||||||
diff --git a/libmultipath/foreign/Makefile b/libmultipath/foreign/Makefile
|
|
||||||
index 0e245d6f..b83213d6 100644
|
|
||||||
--- a/libmultipath/foreign/Makefile
|
|
||||||
+++ b/libmultipath/foreign/Makefile
|
|
||||||
@@ -20,7 +20,7 @@ install:
|
|
||||||
$(Q)$(INSTALL_PROGRAM) -m 755 $(LIBS) $(DESTDIR)$(plugindir)
|
|
||||||
|
|
||||||
uninstall:
|
|
||||||
- for file in $(LIBS); do $(RM) $(DESTDIR)$(plugindir)/$$file; done
|
|
||||||
+ $(Q)for file in $(LIBS); do $(RM) $(DESTDIR)$(plugindir)/$$file; done
|
|
||||||
|
|
||||||
clean: dep_clean
|
|
||||||
$(Q)$(RM) core *.a *.o *.gz *.so
|
|
||||||
diff --git a/libmultipath/prioritizers/Makefile b/libmultipath/prioritizers/Makefile
|
|
||||||
index e1688163..fdec36e7 100644
|
|
||||||
--- a/libmultipath/prioritizers/Makefile
|
|
||||||
+++ b/libmultipath/prioritizers/Makefile
|
|
||||||
@@ -40,7 +40,7 @@ install: $(LIBS)
|
|
||||||
$(Q)$(INSTALL_PROGRAM) -m 755 libprio*.so $(DESTDIR)$(plugindir)
|
|
||||||
|
|
||||||
uninstall:
|
|
||||||
- for file in $(LIBS); do $(RM) $(DESTDIR)$(plugindir)/$$file; done
|
|
||||||
+ $(Q)for file in $(LIBS); do $(RM) $(DESTDIR)$(plugindir)/$$file; done
|
|
||||||
|
|
||||||
clean: dep_clean
|
|
||||||
$(Q)$(RM) core *.a *.o *.gz *.so
|
|
@ -1,132 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Martin Wilck <mwilck@suse.com>
|
|
||||||
Date: Fri, 28 Oct 2022 15:29:51 +0200
|
|
||||||
Subject: [PATCH] GitHub workflows: use make -j8 -Orecurse
|
|
||||||
|
|
||||||
Without -Orecurse, quiet make output is confusing in parallel mode
|
|
||||||
because make prints "Entering directory" and "Leaving directory"
|
|
||||||
messages before and after every target.
|
|
||||||
|
|
||||||
Use parallel compilation also in native.yaml and foreign.yaml.
|
|
||||||
|
|
||||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
|
||||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
---
|
|
||||||
.github/workflows/abi.yaml | 2 +-
|
|
||||||
.github/workflows/build-and-unittest.yaml | 18 +++++++++---------
|
|
||||||
.github/workflows/coverity.yaml | 2 +-
|
|
||||||
.github/workflows/foreign.yaml | 4 ++--
|
|
||||||
.github/workflows/native.yaml | 6 +++---
|
|
||||||
5 files changed, 16 insertions(+), 16 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/.github/workflows/abi.yaml b/.github/workflows/abi.yaml
|
|
||||||
index 89b971cd..644fcb62 100644
|
|
||||||
--- a/.github/workflows/abi.yaml
|
|
||||||
+++ b/.github/workflows/abi.yaml
|
|
||||||
@@ -32,7 +32,7 @@ jobs:
|
|
||||||
libdevmapper-dev libreadline-dev libaio-dev libsystemd-dev
|
|
||||||
libudev-dev libjson-c-dev liburcu-dev libcmocka-dev libedit-dev
|
|
||||||
- name: create ABI
|
|
||||||
- run: make -O -j$(grep -c ^processor /proc/cpuinfo) abi.tar.gz
|
|
||||||
+ run: make -Orecurse -j$(grep -c ^processor /proc/cpuinfo) abi.tar.gz
|
|
||||||
- name: save ABI
|
|
||||||
uses: actions/upload-artifact@v1
|
|
||||||
with:
|
|
||||||
diff --git a/.github/workflows/build-and-unittest.yaml b/.github/workflows/build-and-unittest.yaml
|
|
||||||
index a5a0717d..8b6bb776 100644
|
|
||||||
--- a/.github/workflows/build-and-unittest.yaml
|
|
||||||
+++ b/.github/workflows/build-and-unittest.yaml
|
|
||||||
@@ -32,11 +32,11 @@ jobs:
|
|
||||||
libdevmapper-dev libreadline-dev libaio-dev libsystemd-dev
|
|
||||||
libudev-dev libjson-c-dev liburcu-dev libcmocka-dev libedit-dev
|
|
||||||
- name: build
|
|
||||||
- run: make -O -j$(grep -c ^processor /proc/cpuinfo) READLINE=${{ matrix.rl }}
|
|
||||||
+ run: make -Orecurse -j$(grep -c ^processor /proc/cpuinfo) READLINE=${{ matrix.rl }}
|
|
||||||
- name: test
|
|
||||||
- run: make -O -j$(grep -c ^processor /proc/cpuinfo) test
|
|
||||||
+ run: make -Orecurse -j$(grep -c ^processor /proc/cpuinfo) test
|
|
||||||
- name: valgrind-test
|
|
||||||
- run: make -O -j$(grep -c ^processor /proc/cpuinfo) valgrind-test
|
|
||||||
+ run: make -Orecurse -j$(grep -c ^processor /proc/cpuinfo) valgrind-test
|
|
||||||
- name: valgrind-results
|
|
||||||
run: cat tests/*.vgr
|
|
||||||
- name: clean-nonroot-artifacts
|
|
||||||
@@ -65,11 +65,11 @@ jobs:
|
|
||||||
- name: set CC
|
|
||||||
run: echo CC=gcc-10 >> $GITHUB_ENV
|
|
||||||
- name: build
|
|
||||||
- run: make -O -j$(grep -c ^processor /proc/cpuinfo) READLINE=${{ matrix.rl }}
|
|
||||||
+ run: make -Orecurse -j$(grep -c ^processor /proc/cpuinfo) READLINE=${{ matrix.rl }}
|
|
||||||
- name: test
|
|
||||||
- run: make -O -j$(grep -c ^processor /proc/cpuinfo) test
|
|
||||||
+ run: make -Orecurse -j$(grep -c ^processor /proc/cpuinfo) test
|
|
||||||
- name: valgrind-test
|
|
||||||
- run: make -O -j$(grep -c ^processor /proc/cpuinfo) valgrind-test
|
|
||||||
+ run: make -Orecurse -j$(grep -c ^processor /proc/cpuinfo) valgrind-test
|
|
||||||
- name: valgrind-results
|
|
||||||
run: cat tests/*.vgr
|
|
||||||
- name: clean-nonroot-artifacts
|
|
||||||
@@ -98,11 +98,11 @@ jobs:
|
|
||||||
- name: set CC
|
|
||||||
run: echo CC=clang >> $GITHUB_ENV
|
|
||||||
- name: build
|
|
||||||
- run: make -O -j$(grep -c ^processor /proc/cpuinfo) READLINE=${{ matrix.rl }}
|
|
||||||
+ run: make -Orecurse -j$(grep -c ^processor /proc/cpuinfo) READLINE=${{ matrix.rl }}
|
|
||||||
- name: test
|
|
||||||
- run: make -O -j$(grep -c ^processor /proc/cpuinfo) test
|
|
||||||
+ run: make -Orecurse -j$(grep -c ^processor /proc/cpuinfo) test
|
|
||||||
- name: valgrind-test
|
|
||||||
- run: make -O -j$(grep -c ^processor /proc/cpuinfo) valgrind-test
|
|
||||||
+ run: make -Orecurse -j$(grep -c ^processor /proc/cpuinfo) valgrind-test
|
|
||||||
- name: valgrind-results
|
|
||||||
run: cat tests/*.vgr
|
|
||||||
- name: clean-nonroot-artifacts
|
|
||||||
diff --git a/.github/workflows/coverity.yaml b/.github/workflows/coverity.yaml
|
|
||||||
index 3c6b3824..321b94e0 100644
|
|
||||||
--- a/.github/workflows/coverity.yaml
|
|
||||||
+++ b/.github/workflows/coverity.yaml
|
|
||||||
@@ -32,7 +32,7 @@ jobs:
|
|
||||||
- name: build with cov-build
|
|
||||||
run: >
|
|
||||||
PATH="$PWD/coverity/bin:$PATH"
|
|
||||||
- cov-build --dir cov-int make -O -j"$(grep -c ^processor /proc/cpuinfo)"
|
|
||||||
+ cov-build --dir cov-int make -Orecurse -j"$(grep -c ^processor /proc/cpuinfo)"
|
|
||||||
- name: pack results
|
|
||||||
run: tar cfz multipath-tools.tgz cov-int
|
|
||||||
- name: submit results
|
|
||||||
diff --git a/.github/workflows/foreign.yaml b/.github/workflows/foreign.yaml
|
|
||||||
index 5a19913a..72ac24fb 100644
|
|
||||||
--- a/.github/workflows/foreign.yaml
|
|
||||||
+++ b/.github/workflows/foreign.yaml
|
|
||||||
@@ -21,11 +21,11 @@ jobs:
|
|
||||||
uses: actions/checkout@v1
|
|
||||||
- name: build and test
|
|
||||||
if: ${{ matrix.arch == '' || matrix.arch == '-i386' }}
|
|
||||||
- run: make test
|
|
||||||
+ run: make -j8 -Orecurse test
|
|
||||||
- name: build
|
|
||||||
if: ${{ matrix.arch != '' && matrix.arch != '-i386' }}
|
|
||||||
# The build path is different between builder and runner
|
|
||||||
- run: make TESTDIR=${{ github.workspace }}/tests test-progs
|
|
||||||
+ run: make -j8 -Orecurse TESTDIR=${{ github.workspace }}/tests test-progs
|
|
||||||
- name: archive
|
|
||||||
if: ${{ matrix.arch != '' && matrix.arch != '-i386' }}
|
|
||||||
run: >
|
|
||||||
diff --git a/.github/workflows/native.yaml b/.github/workflows/native.yaml
|
|
||||||
index 8b599209..68bf0984 100644
|
|
||||||
--- a/.github/workflows/native.yaml
|
|
||||||
+++ b/.github/workflows/native.yaml
|
|
||||||
@@ -92,10 +92,10 @@ jobs:
|
|
||||||
- name: checkout
|
|
||||||
uses: actions/checkout@v1
|
|
||||||
- name: build and test
|
|
||||||
- run: make test
|
|
||||||
+ run: make -j8 -Orecurse test
|
|
||||||
- name: clean
|
|
||||||
- run: make clean
|
|
||||||
+ run: make -j8 -Orecurse clean
|
|
||||||
- name: clang
|
|
||||||
env:
|
|
||||||
CC: clang
|
|
||||||
- run: make test
|
|
||||||
+ run: make -j8 -Orecurse test
|
|
@ -12,7 +12,7 @@ Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
diff --git a/Makefile.inc b/Makefile.inc
|
diff --git a/Makefile.inc b/Makefile.inc
|
||||||
index 15f0b9f6..881c1d52 100644
|
index c07bcb0c..e59313c6 100644
|
||||||
--- a/Makefile.inc
|
--- a/Makefile.inc
|
||||||
+++ b/Makefile.inc
|
+++ b/Makefile.inc
|
||||||
@@ -12,7 +12,7 @@
|
@@ -12,7 +12,7 @@
|
@ -1,48 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Martin Wilck <mwilck@suse.com>
|
|
||||||
Date: Fri, 28 Oct 2022 15:40:16 +0200
|
|
||||||
Subject: [PATCH] README.md: Move section about libedit and libreadline
|
|
||||||
|
|
||||||
This paragraph belongs in the "Customiting build" section.
|
|
||||||
|
|
||||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
|
||||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
---
|
|
||||||
README.md | 17 +++++++++--------
|
|
||||||
1 file changed, 9 insertions(+), 8 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/README.md b/README.md
|
|
||||||
index d003e1db..52ab776b 100644
|
|
||||||
--- a/README.md
|
|
||||||
+++ b/README.md
|
|
||||||
@@ -53,14 +53,9 @@ Building multipath-tools
|
|
||||||
========================
|
|
||||||
|
|
||||||
Prerequisites: development packages of for `libdevmapper`, `libaio`, `libudev`,
|
|
||||||
-`libjson-c`, `liburcu`, and `libsystemd`.
|
|
||||||
-
|
|
||||||
-To enable commandline history and TAB completion in the interactive mode *(which
|
|
||||||
-is entered with `multipathd -k` or `multipathc`)* you might also set `READLINE`
|
|
||||||
-make variable to `libedit` or `libreadline`, like `make READLINE=libreadline`.
|
|
||||||
-That requires a development package for the library you chose. Note that using
|
|
||||||
-libreadline may [make binary indistributable due to license
|
|
||||||
-incompatibility](https://github.com/opensvc/multipath-tools/issues/36).
|
|
||||||
+`libjson-c`, `liburcu`, and `libsystemd`. If commandline editing is enabled
|
|
||||||
+(see below), the development package for either `libedit` or `libreadline` is
|
|
||||||
+required as well.
|
|
||||||
|
|
||||||
Then, build and install multipath-tools with:
|
|
||||||
|
|
||||||
@@ -82,6 +77,12 @@ The following variables can be passed to the `make` command line:
|
|
||||||
* `configdir="/some/path"` : directory to search for configuration files.
|
|
||||||
This used to be the run-time option `config_dir` in earlier versions.
|
|
||||||
The default is `/etc/multipath/conf.d`.
|
|
||||||
+ * `READLINE=libedit` or `READLINE=libreadline`: enable command line history
|
|
||||||
+ and TAB completion in the interactive mode *(which is entered with `multipathd -k` or `multipathc`)*.
|
|
||||||
+ The respective development package will be required for building.
|
|
||||||
+ By default, command line editing is disabled.
|
|
||||||
+ Note that using libreadline may
|
|
||||||
+ [make binary indistributable due to license incompatibility](https://github.com/opensvc/multipath-tools/issues/36).
|
|
||||||
* `ENABLE_LIBDMMP=0`: disable building libdmmp
|
|
||||||
* `ENABLE_DMEVENTS_POLL=0`: disable support for the device-mapper event
|
|
||||||
polling API. For use with pre-5.0 kernels that don't support dmevent polling
|
|
@ -1,34 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Martin Wilck <mwilck@suse.com>
|
|
||||||
Date: Fri, 28 Oct 2022 15:42:15 +0200
|
|
||||||
Subject: [PATCH] README.md: Fix indentation in paragraph about device handlers
|
|
||||||
|
|
||||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
|
||||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
---
|
|
||||||
README.md | 12 ++++++------
|
|
||||||
1 file changed, 6 insertions(+), 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/README.md b/README.md
|
|
||||||
index 52ab776b..b1b78fbb 100644
|
|
||||||
--- a/README.md
|
|
||||||
+++ b/README.md
|
|
||||||
@@ -94,12 +94,12 @@ The following variables can be passed to the `make` command line:
|
|
||||||
early. This option causes a *modules-load.d(5)* configuration file to be
|
|
||||||
created, thus it depends on functionality provided by *systemd*.
|
|
||||||
This variable only matters for `make install`.
|
|
||||||
-
|
|
||||||
-Note: The usefulness of the preload list depends on the kernel configuration.
|
|
||||||
-It's especially useful if `scsi_mod` is builtin but `scsi_dh_alua` and
|
|
||||||
-other device handler modules are built as modules. If `scsi_mod` itself is compiled
|
|
||||||
-as a module, it might make more sense to use a module softdep for the same
|
|
||||||
-purpose.
|
|
||||||
+
|
|
||||||
+ **Note**: The usefulness of the preload list depends on the kernel configuration.
|
|
||||||
+ It's especially useful if `scsi_mod` is builtin but `scsi_dh_alua` and
|
|
||||||
+ other device handler modules are built as modules. If `scsi_mod` itself is compiled
|
|
||||||
+ as a module, it might make more sense to use a module softdep for the same
|
|
||||||
+ purpose.
|
|
||||||
|
|
||||||
See `Makefile.inc` for additional variables to customize paths and compiler
|
|
||||||
flags.
|
|
@ -1,47 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Martin Wilck <mwilck@suse.com>
|
|
||||||
Date: Fri, 28 Oct 2022 16:01:17 +0200
|
|
||||||
Subject: [PATCH] README.md: document options for paths and optimization
|
|
||||||
|
|
||||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
|
||||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
---
|
|
||||||
README.md | 25 +++++++++++++++++++++++--
|
|
||||||
1 file changed, 23 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/README.md b/README.md
|
|
||||||
index b1b78fbb..ab7dc3c9 100644
|
|
||||||
--- a/README.md
|
|
||||||
+++ b/README.md
|
|
||||||
@@ -101,8 +101,29 @@ The following variables can be passed to the `make` command line:
|
|
||||||
as a module, it might make more sense to use a module softdep for the same
|
|
||||||
purpose.
|
|
||||||
|
|
||||||
-See `Makefile.inc` for additional variables to customize paths and compiler
|
|
||||||
-flags.
|
|
||||||
+### Installation Paths
|
|
||||||
+
|
|
||||||
+ * `prefix`: The directory prefix for (almost) all files to be installed.
|
|
||||||
+ Distributions may want to set this to `/usr`.
|
|
||||||
+ **Note**: for multipath-tools, unlike many other packages, `prefix`
|
|
||||||
+ defaults to the empty string, which resolves to the root directory (`/`).
|
|
||||||
+ * `usr_prefix`: where to install those parts of the code that aren't necessary
|
|
||||||
+ for booting. You may want to set this to `/usr` if `prefix` is empty.
|
|
||||||
+ * `systemd_prefix`: Prefix for systemd-related files. It defaults to `/usr`.
|
|
||||||
+ Some systemd installations use separate `prefix` and `rootprefix`. On such
|
|
||||||
+ a distribution, set `prefix`, and override `unitdir` to use systemd's
|
|
||||||
+ `rootprefix`.
|
|
||||||
+ * `LIB`: the subdirectory under `prefix` where shared libraries will be
|
|
||||||
+ installed. By default, the makefile uses `/lib64` if this directory is
|
|
||||||
+ found on the build system, and `/lib` otherwise.
|
|
||||||
+
|
|
||||||
+See also `configdir` and `plugindir` above. See `Makefile.inc` for more
|
|
||||||
+fine-grained control.
|
|
||||||
+
|
|
||||||
+### Compiler Options
|
|
||||||
+
|
|
||||||
+Use `OPTFLAGS` to change optimization-related compiler options;
|
|
||||||
+e.g. `OPTFLAGS="-g -O0"` to disable all optimizations.
|
|
||||||
|
|
||||||
Special Makefile targets
|
|
||||||
------------------------
|
|
@ -1,37 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Martin Wilck <mwilck@suse.com>
|
|
||||||
Date: Fri, 28 Oct 2022 16:01:41 +0200
|
|
||||||
Subject: [PATCH] README.md: document how to customize build
|
|
||||||
|
|
||||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
|
||||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
---
|
|
||||||
README.md | 12 ++++++++++++
|
|
||||||
1 file changed, 12 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/README.md b/README.md
|
|
||||||
index ab7dc3c9..bbeb44fe 100644
|
|
||||||
--- a/README.md
|
|
||||||
+++ b/README.md
|
|
||||||
@@ -66,9 +66,21 @@ To uninstall, type:
|
|
||||||
|
|
||||||
make uninstall
|
|
||||||
|
|
||||||
+By default, the build will run quietly, just printing one-line messages
|
|
||||||
+about the files being built. To enable more verbose output, run `make V=1`.
|
|
||||||
+
|
|
||||||
Customizing the build
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
+**Note**: With very few exceptions, the build process does not read
|
|
||||||
+configuration from the environment. So using syntax like
|
|
||||||
+
|
|
||||||
+ SOME_VAR=some_value make
|
|
||||||
+
|
|
||||||
+will **not** have the intended effect. Use the following instead:
|
|
||||||
+
|
|
||||||
+ make SOME_VAR=some_value
|
|
||||||
+
|
|
||||||
The following variables can be passed to the `make` command line:
|
|
||||||
|
|
||||||
* `plugindir="/some/path"`: directory where libmultipath plugins (path
|
|
@ -1,63 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Martin Wilck <mwilck@suse.com>
|
|
||||||
Date: Fri, 28 Oct 2022 21:10:41 +0200
|
|
||||||
Subject: [PATCH] libmultipath: avoid -Warray-bounds error with gcc 12 and musl
|
|
||||||
libc
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
The following error is observed with gcc 12, strangely only with
|
|
||||||
MUSL libc:
|
|
||||||
|
|
||||||
In function ‘__uatomic_inc’,
|
|
||||||
inlined from ‘lock’ at ../libmultipath/lock.h:24:2,
|
|
||||||
inlined from ‘child’ at main.c:3523:3,
|
|
||||||
inlined from ‘main’ at main.c:3755:11:
|
|
||||||
/usr/include/urcu/uatomic/x86.h:439:17: error: array subscript ‘struct __uatomic_dummy[0]’ is partly outside array bounds of ‘unsigned char[72]’ [-Werror=array-bounds]
|
|
||||||
|
|
||||||
The problem is that &(vecs->lock.waiters) is casted to a pointer to
|
|
||||||
struct { long[10]; } which goes beyond the "struct vectors".
|
|
||||||
We don't read or write from/to that memory, but the compiler complains either
|
|
||||||
way.
|
|
||||||
|
|
||||||
latest liburcu has a patch for it:
|
|
||||||
|
|
||||||
http://git.liburcu.org/?p=userspace-rcu.git;a=commitdiff;h=835b9ab3ca3777fe42e37e92096226ebd19ca75b
|
|
||||||
|
|
||||||
For now, just disable the warning in lock.h, using a pragma.
|
|
||||||
|
|
||||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
|
||||||
Reported-by: Xose Vasquez Perez <xose.vasquez@gmail.com>
|
|
||||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
---
|
|
||||||
libmultipath/lock.h | 9 +++++++++
|
|
||||||
1 file changed, 9 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/libmultipath/lock.h b/libmultipath/lock.h
|
|
||||||
index 20ca77e6..9814be76 100644
|
|
||||||
--- a/libmultipath/lock.h
|
|
||||||
+++ b/libmultipath/lock.h
|
|
||||||
@@ -13,6 +13,11 @@ struct mutex_lock {
|
|
||||||
int waiters; /* uatomic access only */
|
|
||||||
};
|
|
||||||
|
|
||||||
+#if !defined(__GLIBC__) && defined(__GNUC__) && __GNUC__ == 12
|
|
||||||
+#pragma GCC diagnostic push
|
|
||||||
+#pragma GCC diagnostic ignored "-Warray-bounds"
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
static inline void init_lock(struct mutex_lock *a)
|
|
||||||
{
|
|
||||||
pthread_mutex_init(&a->mutex, NULL);
|
|
||||||
@@ -46,6 +51,10 @@ static inline bool lock_has_waiters(struct mutex_lock *a)
|
|
||||||
return (uatomic_read(&a->waiters) > 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
+#if !defined(__GLIBC__) && defined(__GNUC__) && __GNUC__ == 12
|
|
||||||
+#pragma GCC diagnostic pop
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
#define lock_cleanup_pop(a) pthread_cleanup_pop(1)
|
|
||||||
|
|
||||||
void cleanup_lock (void * data);
|
|
@ -1,26 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Martin Wilck <mwilck@suse.com>
|
|
||||||
Date: Tue, 27 Sep 2022 12:14:09 +0200
|
|
||||||
Subject: [PATCH] multipath: avoid NULL string in released_to_systemd()
|
|
||||||
|
|
||||||
Fixes: b28c406 ("multipath -u: don't grab devices already passed to system")
|
|
||||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
|
||||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
---
|
|
||||||
multipath/main.c | 3 ++-
|
|
||||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/multipath/main.c b/multipath/main.c
|
|
||||||
index 7b69a3ce..b9f360b4 100644
|
|
||||||
--- a/multipath/main.c
|
|
||||||
+++ b/multipath/main.c
|
|
||||||
@@ -435,7 +435,8 @@ static bool released_to_systemd(void)
|
|
||||||
bool ret;
|
|
||||||
|
|
||||||
ret = dm_mp_dev_path != NULL && !strcmp(dm_mp_dev_path, "0");
|
|
||||||
- condlog(4, "%s: %s=%s -> %d", __func__, dmdp, dm_mp_dev_path, ret);
|
|
||||||
+ condlog(4, "%s: %s=%s -> %d", __func__, dmdp,
|
|
||||||
+ dm_mp_dev_path ? dm_mp_dev_path : "", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
@ -1,26 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Martin Wilck <mwilck@suse.com>
|
|
||||||
Date: Tue, 27 Sep 2022 12:28:26 +0200
|
|
||||||
Subject: [PATCH] libmultipath: avoid NULL string in is_udev_ready()
|
|
||||||
|
|
||||||
Fixes: 2b25a9e ("libmultipath: select_action(): force udev reload for uninitialized maps")
|
|
||||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
|
||||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
---
|
|
||||||
libmultipath/configure.c | 3 ++-
|
|
||||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/libmultipath/configure.c b/libmultipath/configure.c
|
|
||||||
index e5249fc1..e551047a 100644
|
|
||||||
--- a/libmultipath/configure.c
|
|
||||||
+++ b/libmultipath/configure.c
|
|
||||||
@@ -662,7 +662,8 @@ static bool is_udev_ready(struct multipath *cmpp)
|
|
||||||
env = udev_device_get_property_value(mpp_ud, "MPATH_DEVICE_READY");
|
|
||||||
rc = (env != NULL && !strcmp(env, "1"));
|
|
||||||
udev_device_unref(mpp_ud);
|
|
||||||
- condlog(4, "%s: %s: \"%s\" -> %d\n", __func__, cmpp->alias, env, rc);
|
|
||||||
+ condlog(4, "%s: %s: \"%s\" -> %d\n", __func__, cmpp->alias,
|
|
||||||
+ env ? env : "", rc);
|
|
||||||
return rc;
|
|
||||||
}
|
|
||||||
|
|
@ -1,115 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
Date: Wed, 9 Nov 2022 15:49:41 -0600
|
|
||||||
Subject: [PATCH] libmultipath: impove add_feature() variable names
|
|
||||||
|
|
||||||
Use descriptive names, instead of single letters. No functional changes.
|
|
||||||
|
|
||||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
Reviewed-by: Martin Wilck <mwilck@suse.com>
|
|
||||||
---
|
|
||||||
libmultipath/structs.c | 63 +++++++++++++++++++++---------------------
|
|
||||||
1 file changed, 32 insertions(+), 31 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/libmultipath/structs.c b/libmultipath/structs.c
|
|
||||||
index 7a2ff589..f90bd0b6 100644
|
|
||||||
--- a/libmultipath/structs.c
|
|
||||||
+++ b/libmultipath/structs.c
|
|
||||||
@@ -604,65 +604,66 @@ first_path (const struct multipath * mpp)
|
|
||||||
return pgp?VECTOR_SLOT(pgp->paths, 0):NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
-int add_feature(char **f, const char *n)
|
|
||||||
+int add_feature(char **features_p, const char *new_feat)
|
|
||||||
{
|
|
||||||
- int c = 0, d, l;
|
|
||||||
- char *e, *t;
|
|
||||||
- const char *p;
|
|
||||||
+ int count = 0, new_count, len;
|
|
||||||
+ char *tmp, *feats;
|
|
||||||
+ const char *ptr;
|
|
||||||
|
|
||||||
- if (!f)
|
|
||||||
+ if (!features_p)
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
/* Nothing to do */
|
|
||||||
- if (!n || *n == '\0')
|
|
||||||
+ if (!new_feat || *new_feat == '\0')
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
- l = strlen(n);
|
|
||||||
- if (isspace(*n) || isspace(*(n + l - 1))) {
|
|
||||||
- condlog(0, "internal error: feature \"%s\" has leading or trailing spaces", n);
|
|
||||||
+ len = strlen(new_feat);
|
|
||||||
+ if (isspace(*new_feat) || isspace(*(new_feat + len - 1))) {
|
|
||||||
+ condlog(0, "internal error: feature \"%s\" has leading or trailing spaces",
|
|
||||||
+ new_feat);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
- p = n;
|
|
||||||
- d = 1;
|
|
||||||
- while (*p != '\0') {
|
|
||||||
- if (isspace(*p) && !isspace(*(p + 1)) && *(p + 1) != '\0')
|
|
||||||
- d++;
|
|
||||||
- p++;
|
|
||||||
+ ptr = new_feat;
|
|
||||||
+ new_count = 1;
|
|
||||||
+ while (*ptr != '\0') {
|
|
||||||
+ if (isspace(*ptr) && !isspace(*(ptr + 1)) && *(ptr + 1) != '\0')
|
|
||||||
+ new_count++;
|
|
||||||
+ ptr++;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* default feature is null */
|
|
||||||
- if(!*f)
|
|
||||||
+ if(!*features_p)
|
|
||||||
{
|
|
||||||
- l = asprintf(&t, "%0d %s", d, n);
|
|
||||||
- if(l == -1)
|
|
||||||
+ len = asprintf(&feats, "%0d %s", new_count, new_feat);
|
|
||||||
+ if(len == -1)
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
- *f = t;
|
|
||||||
+ *features_p = feats;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Check if feature is already present */
|
|
||||||
- e = *f;
|
|
||||||
- while ((e = strstr(e, n)) != NULL) {
|
|
||||||
- if (isspace(*(e - 1)) &&
|
|
||||||
- (isspace(*(e + l)) || *(e + l) == '\0'))
|
|
||||||
+ tmp = *features_p;
|
|
||||||
+ while ((tmp = strstr(tmp, new_feat)) != NULL) {
|
|
||||||
+ if (isspace(*(tmp - 1)) &&
|
|
||||||
+ (isspace(*(tmp + len)) || *(tmp + len) == '\0'))
|
|
||||||
return 0;
|
|
||||||
- e += l;
|
|
||||||
+ tmp += len;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Get feature count */
|
|
||||||
- c = strtoul(*f, &e, 10);
|
|
||||||
- if (*f == e || (!isspace(*e) && *e != '\0')) {
|
|
||||||
- condlog(0, "parse error in feature string \"%s\"", *f);
|
|
||||||
+ count = strtoul(*features_p, &tmp, 10);
|
|
||||||
+ if (*features_p == tmp || (!isspace(*tmp) && *tmp != '\0')) {
|
|
||||||
+ condlog(0, "parse error in feature string \"%s\"", *features_p);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
- c += d;
|
|
||||||
- if (asprintf(&t, "%0d%s %s", c, e, n) < 0)
|
|
||||||
+ count += new_count;
|
|
||||||
+ if (asprintf(&feats, "%0d%s %s", count, tmp, new_feat) < 0)
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
- free(*f);
|
|
||||||
- *f = t;
|
|
||||||
+ free(*features_p);
|
|
||||||
+ *features_p = feats;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
@ -1,31 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
Date: Wed, 9 Nov 2022 15:49:42 -0600
|
|
||||||
Subject: [PATCH] multipathd: don't initialize the field width in show_path()
|
|
||||||
|
|
||||||
It's not used, so don't set it up.
|
|
||||||
|
|
||||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
Reviewed-by: Martin Wilck <mwilck@suse.com>
|
|
||||||
---
|
|
||||||
multipathd/cli_handlers.c | 7 +------
|
|
||||||
1 file changed, 1 insertion(+), 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/multipathd/cli_handlers.c b/multipathd/cli_handlers.c
|
|
||||||
index 5f0dd04e..e65fb75c 100644
|
|
||||||
--- a/multipathd/cli_handlers.c
|
|
||||||
+++ b/multipathd/cli_handlers.c
|
|
||||||
@@ -67,12 +67,7 @@ static int
|
|
||||||
show_path (struct strbuf *reply, struct vectors *vecs, struct path *pp,
|
|
||||||
char *style)
|
|
||||||
{
|
|
||||||
- fieldwidth_t *width __attribute__((cleanup(cleanup_ucharp))) = NULL;
|
|
||||||
-
|
|
||||||
- if ((width = alloc_path_layout()) == NULL)
|
|
||||||
- return 1;
|
|
||||||
- get_path_layout(vecs->pathvec, 1, width);
|
|
||||||
- if (snprint_path(reply, style, pp, 0) < 0)
|
|
||||||
+ if (snprint_path(reply, style, pp, NULL) < 0)
|
|
||||||
return 1;
|
|
||||||
return 0;
|
|
||||||
}
|
|
@ -1,144 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
Date: Wed, 9 Nov 2022 15:49:43 -0600
|
|
||||||
Subject: [PATCH] libmultipath: improve remove_feature() variable names
|
|
||||||
|
|
||||||
Use descriptive names, instead of single letters. No functional changes.
|
|
||||||
|
|
||||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
||||||
Reviewed-by: Martin Wilck <mwilck@suse.com>
|
|
||||||
---
|
|
||||||
libmultipath/structs.c | 80 +++++++++++++++++++++---------------------
|
|
||||||
1 file changed, 40 insertions(+), 40 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/libmultipath/structs.c b/libmultipath/structs.c
|
|
||||||
index f90bd0b6..87e84d5d 100644
|
|
||||||
--- a/libmultipath/structs.c
|
|
||||||
+++ b/libmultipath/structs.c
|
|
||||||
@@ -668,86 +668,86 @@ int add_feature(char **features_p, const char *new_feat)
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
-int remove_feature(char **f, const char *o)
|
|
||||||
+int remove_feature(char **features_p, const char *old_feat)
|
|
||||||
{
|
|
||||||
- int c = 0, d;
|
|
||||||
- char *e, *p, *n;
|
|
||||||
- const char *q;
|
|
||||||
+ int count = 0, len;
|
|
||||||
+ char *feats_start, *ptr, *new;
|
|
||||||
|
|
||||||
- if (!f || !*f)
|
|
||||||
+ if (!features_p || !*features_p)
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
/* Nothing to do */
|
|
||||||
- if (!o || *o == '\0')
|
|
||||||
+ if (!old_feat || *old_feat == '\0')
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
- d = strlen(o);
|
|
||||||
- if (isspace(*o) || isspace(*(o + d - 1))) {
|
|
||||||
- condlog(0, "internal error: feature \"%s\" has leading or trailing spaces", o);
|
|
||||||
+ len = strlen(old_feat);
|
|
||||||
+ if (isspace(*old_feat) || isspace(*(old_feat + len - 1))) {
|
|
||||||
+ condlog(0, "internal error: feature \"%s\" has leading or trailing spaces",
|
|
||||||
+ old_feat);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Check if present and not part of a larger feature token*/
|
|
||||||
- p = *f + 1; /* the size must be at the start of the features string */
|
|
||||||
- while ((p = strstr(p, o)) != NULL) {
|
|
||||||
- if (isspace(*(p - 1)) &&
|
|
||||||
- (isspace(*(p + d)) || *(p + d) == '\0'))
|
|
||||||
+ ptr = *features_p + 1;
|
|
||||||
+ while ((ptr = strstr(ptr, old_feat)) != NULL) {
|
|
||||||
+ if (isspace(*(ptr - 1)) &&
|
|
||||||
+ (isspace(*(ptr + len)) || *(ptr + len) == '\0'))
|
|
||||||
break;
|
|
||||||
- p += d;
|
|
||||||
+ ptr += len;
|
|
||||||
}
|
|
||||||
- if (!p)
|
|
||||||
+ if (!ptr)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
/* Get feature count */
|
|
||||||
- c = strtoul(*f, &e, 10);
|
|
||||||
- if (*f == e || !isspace(*e)) {
|
|
||||||
- condlog(0, "parse error in feature string \"%s\"", *f);
|
|
||||||
+ count = strtoul(*features_p, &feats_start, 10);
|
|
||||||
+ if (*features_p == feats_start || !isspace(*feats_start)) {
|
|
||||||
+ condlog(0, "parse error in feature string \"%s\"", *features_p);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Update feature count */
|
|
||||||
- c--;
|
|
||||||
- q = o;
|
|
||||||
- while (*q != '\0') {
|
|
||||||
- if (isspace(*q) && !isspace(*(q + 1)) && *(q + 1) != '\0')
|
|
||||||
- c--;
|
|
||||||
- q++;
|
|
||||||
+ count--;
|
|
||||||
+ while (*old_feat != '\0') {
|
|
||||||
+ if (isspace(*old_feat) && !isspace(*(old_feat + 1)) &&
|
|
||||||
+ *(old_feat + 1) != '\0')
|
|
||||||
+ count--;
|
|
||||||
+ old_feat++;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Quick exit if all features have been removed */
|
|
||||||
- if (c == 0) {
|
|
||||||
- n = malloc(2);
|
|
||||||
- if (!n)
|
|
||||||
+ if (count == 0) {
|
|
||||||
+ new = malloc(2);
|
|
||||||
+ if (!new)
|
|
||||||
return 1;
|
|
||||||
- strcpy(n, "0");
|
|
||||||
+ strcpy(new, "0");
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Update feature count space */
|
|
||||||
- n = malloc(strlen(*f) - d + 1);
|
|
||||||
- if (!n)
|
|
||||||
+ new = malloc(strlen(*features_p) - len + 1);
|
|
||||||
+ if (!new)
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
/* Copy the feature count */
|
|
||||||
- sprintf(n, "%0d", c);
|
|
||||||
+ sprintf(new, "%0d", count);
|
|
||||||
/*
|
|
||||||
* Copy existing features up to the feature
|
|
||||||
* about to be removed
|
|
||||||
*/
|
|
||||||
- strncat(n, e, (size_t)(p - e));
|
|
||||||
+ strncat(new, feats_start, (size_t)(ptr - feats_start));
|
|
||||||
/* Skip feature to be removed */
|
|
||||||
- p += d;
|
|
||||||
+ ptr += len;
|
|
||||||
/* Copy remaining features */
|
|
||||||
- while (isspace(*p))
|
|
||||||
- p++;
|
|
||||||
- if (*p != '\0')
|
|
||||||
- strcat(n, p);
|
|
||||||
+ while (isspace(*ptr))
|
|
||||||
+ ptr++;
|
|
||||||
+ if (*ptr != '\0')
|
|
||||||
+ strcat(new, ptr);
|
|
||||||
else
|
|
||||||
- strchop(n);
|
|
||||||
+ strchop(new);
|
|
||||||
|
|
||||||
out:
|
|
||||||
- free(*f);
|
|
||||||
- *f = n;
|
|
||||||
+ free(*features_p);
|
|
||||||
+ *features_p = new;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
@ -1,59 +1,37 @@
|
|||||||
Name: device-mapper-multipath
|
Name: device-mapper-multipath
|
||||||
Version: 0.9.3
|
Version: 0.9.4
|
||||||
Release: 2%{?dist}
|
Release: 1%{?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/
|
||||||
|
|
||||||
# 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 -L https://github.com/opensvc/multipath-tools/archive/0.9.3.tar.gz -o multipath-tools-0.9.3.tgz
|
# curl -L https://github.com/opensvc/multipath-tools/archive/0.9.4.tar.gz -o multipath-tools-0.9.4.tgz
|
||||||
Source0: multipath-tools-0.9.3.tgz
|
Source0: multipath-tools-0.9.4.tgz
|
||||||
Source1: multipath.conf
|
Source1: multipath.conf
|
||||||
Patch0001: 0001-libmultipath-fix-show-paths-format-failure.patch
|
Patch0001: 0001-multipathd-make-pr-registration-consistent.patch
|
||||||
Patch0002: 0002-fixup-Makefile.inc-fix-man-and-include-paths.patch
|
Patch0002: 0002-libmultipath-make-prflag-an-enum.patch
|
||||||
Patch0003: 0003-multipath-tools-Makefile.inc-Fix-paths-for-systemd.patch
|
Patch0003: 0003-multipathd-handle-no-active-paths-in-update_map_pr.patch
|
||||||
Patch0004: 0004-multipath-tools-Makefile.inc-don-t-take-values-from-.patch
|
Patch0004: 0004-multipathd-add-missing-newline-to-cli_del_map-reply.patch
|
||||||
Patch0005: 0005-multipath-tools-Makefile.inc-get-rid-of-RUN.patch
|
Patch0005: 0005-libmultipath-skip-extra-vector-work-in-remove_maps.patch
|
||||||
Patch0006: 0006-multipath-tools-Makefile.inc-more-compact-code-for-L.patch
|
Patch0006: 0006-libmultipath-orphan-paths-if-coalesce_paths-frees-ne.patch
|
||||||
Patch0007: 0007-multipath-tools-Makefiles-simplify-code-for-include-.patch
|
Patch0007: 0007-libmultipath-is_path_valid-check-if-device-is-in-use.patch
|
||||||
Patch0008: 0008-multipath-tools-Makefiles-use-mandir.patch
|
Patch0008: 0008-libmpathpersist-use-conf-timeout-for-updating-persis.patch
|
||||||
Patch0009: 0009-multipath-tools-Makefile.inc-simplify-expression-for.patch
|
Patch0009: 0009-libmultipath-pathinfo-don-t-fail-for-devices-lacking.patch
|
||||||
Patch0010: 0010-multipath-tools-Makefile.inc-untangle-paths-and-sour.patch
|
Patch0010: 0010-libmultipath-bump-ABI-version-to-18.0.0.patch
|
||||||
Patch0011: 0011-multipath-tools-Makefiles-replace-libdir-by-plugindi.patch
|
Patch0011: 0011-RH-fixup-udev-rules-for-redhat.patch
|
||||||
Patch0012: 0012-multipath-tools-Makefile.inc-use-simple-make-variabl.patch
|
Patch0012: 0012-RH-Remove-the-property-blacklist-exception-builtin.patch
|
||||||
Patch0013: 0013-multipath-tools-Makefile.inc-fix-a-log-message.patch
|
Patch0013: 0013-RH-don-t-start-without-a-config-file.patch
|
||||||
Patch0014: 0014-multipath-tools-Makefile.inc-set-systemd-specific-fl.patch
|
Patch0014: 0014-RH-Fix-nvme-function-missing-argument.patch
|
||||||
Patch0015: 0015-multipathd-Makefile-fix-compilation-flags-for-libedi.patch
|
Patch0015: 0015-RH-use-rpm-optflags-if-present.patch
|
||||||
Patch0016: 0016-multipath-tools-Makefiles-clean-up-executable-Makefi.patch
|
Patch0016: 0016-RH-add-mpathconf.patch
|
||||||
Patch0017: 0017-multipath-tools-Makefiles-use-common-code-for-librar.patch
|
Patch0017: 0017-RH-add-wwids-from-kernel-cmdline-mpath.wwids-with-A.patch
|
||||||
Patch0018: 0018-multipath-tools-Makefiles-move-common-code-to-rules..patch
|
Patch0018: 0018-RH-reset-default-find_mutipaths-value-to-off.patch
|
||||||
Patch0019: 0019-multipath-tools-Makefiles-create-config.mk.patch
|
Patch0019: 0019-RH-attempt-to-get-ANA-info-via-sysfs-first.patch
|
||||||
Patch0020: 0020-multipath-tools-Makefiles-enable-quiet-build.patch
|
Patch0020: 0020-RH-make-parse_vpd_pg83-match-scsi_id-output.patch
|
||||||
Patch0021: 0021-multipath-tools-quiet-build-support-for-top-level-Ma.patch
|
Patch0021: 0021-RH-add-scsi-device-handlers-to-modules-load.d.patch
|
||||||
Patch0022: 0022-GitHub-workflows-use-make-j8-Orecurse.patch
|
Patch0022: 0022-RH-compile-with-libreadline-support.patch
|
||||||
Patch0023: 0023-README.md-Move-section-about-libedit-and-libreadline.patch
|
|
||||||
Patch0024: 0024-README.md-Fix-indentation-in-paragraph-about-device-.patch
|
|
||||||
Patch0025: 0025-README.md-document-options-for-paths-and-optimizatio.patch
|
|
||||||
Patch0026: 0026-README.md-document-how-to-customize-build.patch
|
|
||||||
Patch0027: 0027-libmultipath-avoid-Warray-bounds-error-with-gcc-12-a.patch
|
|
||||||
Patch0028: 0028-multipath-avoid-NULL-string-in-released_to_systemd.patch
|
|
||||||
Patch0029: 0029-libmultipath-avoid-NULL-string-in-is_udev_ready.patch
|
|
||||||
Patch0030: 0030-libmultipath-impove-add_feature-variable-names.patch
|
|
||||||
Patch0031: 0031-multipathd-don-t-initialize-the-field-width-in-show_.patch
|
|
||||||
Patch0032: 0032-libmultipath-improve-remove_feature-variable-names.patch
|
|
||||||
Patch0033: 0033-RH-fixup-udev-rules-for-redhat.patch
|
|
||||||
Patch0034: 0034-RH-Remove-the-property-blacklist-exception-builtin.patch
|
|
||||||
Patch0035: 0035-RH-don-t-start-without-a-config-file.patch
|
|
||||||
Patch0036: 0036-RH-Fix-nvme-function-missing-argument.patch
|
|
||||||
Patch0037: 0037-RH-use-rpm-optflags-if-present.patch
|
|
||||||
Patch0038: 0038-RH-add-mpathconf.patch
|
|
||||||
Patch0039: 0039-RH-add-wwids-from-kernel-cmdline-mpath.wwids-with-A.patch
|
|
||||||
Patch0040: 0040-RH-reset-default-find_mutipaths-value-to-off.patch
|
|
||||||
Patch0041: 0041-RH-attempt-to-get-ANA-info-via-sysfs-first.patch
|
|
||||||
Patch0042: 0042-RH-make-parse_vpd_pg83-match-scsi_id-output.patch
|
|
||||||
Patch0043: 0043-RH-add-scsi-device-handlers-to-modules-load.d.patch
|
|
||||||
Patch0044: 0044-RH-compile-with-libreadline-support.patch
|
|
||||||
|
|
||||||
# runtime
|
# runtime
|
||||||
Requires: %{name}-libs = %{version}-%{release}
|
Requires: %{name}-libs = %{version}-%{release}
|
||||||
@ -61,6 +39,7 @@ Requires: kpartx = %{version}-%{release}
|
|||||||
Requires: device-mapper >= 1.02.96
|
Requires: device-mapper >= 1.02.96
|
||||||
Requires: userspace-rcu
|
Requires: userspace-rcu
|
||||||
Requires: readline
|
Requires: readline
|
||||||
|
Requires: libmount
|
||||||
Requires(post): systemd-units
|
Requires(post): systemd-units
|
||||||
Requires(preun): systemd-units
|
Requires(preun): systemd-units
|
||||||
Requires(postun): systemd-units
|
Requires(postun): systemd-units
|
||||||
@ -82,6 +61,7 @@ BuildRequires: readline-devel, ncurses-devel
|
|||||||
BuildRequires: systemd-units, systemd-devel
|
BuildRequires: systemd-units, systemd-devel
|
||||||
BuildRequires: json-c-devel, perl-interpreter, pkgconfig, gcc
|
BuildRequires: json-c-devel, perl-interpreter, pkgconfig, gcc
|
||||||
BuildRequires: userspace-rcu-devel
|
BuildRequires: userspace-rcu-devel
|
||||||
|
BuildRequires: libmount-devel
|
||||||
BuildRequires: make
|
BuildRequires: make
|
||||||
|
|
||||||
%description
|
%description
|
||||||
@ -138,7 +118,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
|
||||||
%autosetup -n multipath-tools-0.9.3 -p1
|
%autosetup -n multipath-tools-0.9.4 -p1
|
||||||
cp %{SOURCE1} .
|
cp %{SOURCE1} .
|
||||||
|
|
||||||
%build
|
%build
|
||||||
@ -260,6 +240,14 @@ fi
|
|||||||
%{_pkgconfdir}/libdmmp.pc
|
%{_pkgconfdir}/libdmmp.pc
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Jan 26 2023 Benjamin Marzinski <bmarzins@redhat.com> - 0.9.4-1
|
||||||
|
- Update to the head of the upstream staging branch
|
||||||
|
* Previous patches 0001-0032 are intlcude in the source tarball
|
||||||
|
* Patches 0001-0010 are from the upstream staging branch
|
||||||
|
- Rename redhat patches
|
||||||
|
* Previous patches 0033-0044 are not patches 0011-0022
|
||||||
|
- Add dependency on libmount
|
||||||
|
|
||||||
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.3-2
|
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.3-2
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
|
||||||
|
|
||||||
|
2
sources
2
sources
@ -1,2 +1,2 @@
|
|||||||
SHA512 (multipath-tools-0.9.3.tgz) = 4faa2ee5a96a9d5d752219931ebc885cb70ed6b022d45ede985ad7919c043a3aee166e6f126d32dffd187c5c32d5cbce91747d87d0b55557e2f7f68b279583da
|
SHA512 (multipath-tools-0.9.4.tgz) = 5e0dcea610fc215e345444c04453a38f39c73e493c2bc53f6b3a90cd701266aabdf7c4693dfc321099af836d0019bf27355e265ad5db5deff48f8bb94ed4719d
|
||||||
SHA512 (multipath.conf) = 71953dce5a68adcf60a942305f5a66023e6f4c4baf53b1bfdb4edf65ed5b8e03db804363c36d1dcfd85591f4766f52b515269904c53b84d7b076da0b80b09942
|
SHA512 (multipath.conf) = 71953dce5a68adcf60a942305f5a66023e6f4c4baf53b1bfdb4edf65ed5b8e03db804363c36d1dcfd85591f4766f52b515269904c53b84d7b076da0b80b09942
|
||||||
|
Loading…
Reference in New Issue
Block a user