Compare commits
4 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d6f2be9e59 | ||
|
|
3c9f48504b | ||
|
|
9f48ebd2e2 | ||
|
|
30306052cc |
52 changed files with 172 additions and 2012 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -33,3 +33,5 @@ multipath-tools-091027.tar.gz
|
|||
/multipath-tools-0.9.8.tgz
|
||||
/multipath-tools-0.9.9.tgz
|
||||
/multipath-tools-0.10.0.tgz
|
||||
/multipath-tools-0.11.1.tgz
|
||||
/multipath-tools-0.13.0.tgz
|
||||
|
|
|
|||
|
|
@ -1,122 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Wilck <mwilck@suse.com>
|
||||
Date: Fri, 13 Sep 2024 09:09:19 +0200
|
||||
Subject: [PATCH] GitHub workflows: use {upload,download}-artifact@v4
|
||||
|
||||
The @v1 releases are deprecated.
|
||||
https://github.blog/changelog/2024-02-13-deprecation-notice-v1-and-v2-of-the-artifact-actions/
|
||||
|
||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
---
|
||||
.github/workflows/abi.yaml | 6 ++++--
|
||||
.github/workflows/foreign.yaml | 15 +++++++--------
|
||||
.github/workflows/native.yaml | 5 +++--
|
||||
3 files changed, 14 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/.github/workflows/abi.yaml b/.github/workflows/abi.yaml
|
||||
index 393322e5..dce09f5c 100644
|
||||
--- a/.github/workflows/abi.yaml
|
||||
+++ b/.github/workflows/abi.yaml
|
||||
@@ -45,10 +45,11 @@ jobs:
|
||||
- name: create ABI
|
||||
run: make -Orecurse -j$(grep -c ^processor /proc/cpuinfo) abi.tar.gz
|
||||
- name: save ABI
|
||||
- uses: actions/upload-artifact@v1
|
||||
+ uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: abi
|
||||
path: abi
|
||||
+ overwrite: true
|
||||
- name: compare ABI against reference
|
||||
id: compare
|
||||
continue-on-error: true
|
||||
@@ -56,10 +57,11 @@ jobs:
|
||||
run: make abi-test
|
||||
- name: save differences
|
||||
if: ${{ steps.compare.outcome == 'failure' }}
|
||||
- uses: actions/upload-artifact@v1
|
||||
+ uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: abi-test
|
||||
path: abi-test
|
||||
+ overwrite: true
|
||||
|
||||
- name: fail
|
||||
# MUST use >- here, otherwise the condition always evaluates to true
|
||||
diff --git a/.github/workflows/foreign.yaml b/.github/workflows/foreign.yaml
|
||||
index 9e4d35e0..d68650df 100644
|
||||
--- a/.github/workflows/foreign.yaml
|
||||
+++ b/.github/workflows/foreign.yaml
|
||||
@@ -36,14 +36,13 @@ jobs:
|
||||
- name: checkout
|
||||
uses: actions/checkout@v1
|
||||
- name: build
|
||||
- run: make -j8 -Orecurse test-progs
|
||||
- - name: create binary archive
|
||||
- run: make test-progs.tar
|
||||
+ run: make -j -Orecurse test-progs.tar
|
||||
- name: upload binary archive
|
||||
- uses: actions/upload-artifact@v1
|
||||
+ uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: cross-${{ matrix.os }}-${{ matrix.arch }}
|
||||
path: test-progs.tar
|
||||
+ overwrite: true
|
||||
|
||||
test:
|
||||
runs-on: ubuntu-22.04
|
||||
@@ -61,11 +60,11 @@ jobs:
|
||||
run: echo CONTAINER_ARCH="arm/v7" >> $GITHUB_ENV
|
||||
if: ${{ matrix.arch == 'armhf' }}
|
||||
- name: download binary archive
|
||||
- uses: actions/download-artifact@v1
|
||||
+ uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: cross-${{ matrix.os }}-${{ matrix.arch }}
|
||||
- name: unpack binary archive
|
||||
- run: tar xfv cross-${{ matrix.os }}-${{ matrix.arch }}/test-progs.tar
|
||||
+ run: tar xfv test-progs.tar
|
||||
- name: enable foreign arch
|
||||
uses: dbhi/qus/action@main
|
||||
- name: run tests
|
||||
@@ -100,11 +99,11 @@ jobs:
|
||||
run: echo CONTAINER_ARCH="arm/v7" >> $GITHUB_ENV
|
||||
if: ${{ matrix.arch == 'armhf' }}
|
||||
- name: download binary archive
|
||||
- uses: actions/download-artifact@v1
|
||||
+ uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: cross-${{ matrix.os }}-${{ matrix.arch }}
|
||||
- name: unpack binary archive
|
||||
- run: tar xfv cross-${{ matrix.os }}-${{ matrix.arch }}/test-progs.tar
|
||||
+ run: tar xfv test-progs.tar
|
||||
- name: enable foreign arch
|
||||
uses: dbhi/qus/action@main
|
||||
- name: run tests
|
||||
diff --git a/.github/workflows/native.yaml b/.github/workflows/native.yaml
|
||||
index 80ff6df5..500becaa 100644
|
||||
--- a/.github/workflows/native.yaml
|
||||
+++ b/.github/workflows/native.yaml
|
||||
@@ -57,10 +57,11 @@ jobs:
|
||||
- name: create binary archive
|
||||
run: make ${{ env.ARCHIVE_TGT }}
|
||||
- name: upload binary archive
|
||||
- uses: actions/upload-artifact@v1
|
||||
+ uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: native-${{ matrix.os }}
|
||||
path: ${{ env.ARCHIVE_TGT }}
|
||||
+ overwrite: true
|
||||
|
||||
- name: clean
|
||||
run: make clean
|
||||
@@ -98,7 +99,7 @@ jobs:
|
||||
uses: actions/checkout@v1
|
||||
|
||||
- name: download binary archive
|
||||
- uses: actions/download-artifact@v1
|
||||
+ uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: native-${{ matrix.os }}
|
||||
- name: unpack binary archive
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From 64a07df23affd21842fdc604887276e62e5b41de Mon Sep 17 00:00:00 2001
|
||||
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
Date: Thu, 13 Apr 2017 07:22:23 -0500
|
||||
Subject: [PATCH] RH: fixup udev rules for redhat
|
||||
|
|
@ -15,7 +15,7 @@ Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|||
3 files changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/Makefile.inc b/Makefile.inc
|
||||
index 729618bd..81cb61d2 100644
|
||||
index 9e3dc466..ead89030 100644
|
||||
--- a/Makefile.inc
|
||||
+++ b/Makefile.inc
|
||||
@@ -34,7 +34,7 @@ endif
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Wilck <mwilck@suse.com>
|
||||
Date: Fri, 13 Sep 2024 09:10:38 +0200
|
||||
Subject: [PATCH] GitHub workflows: update dawidd6/action-download-artifact
|
||||
|
||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
---
|
||||
.github/workflows/abi.yaml | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/.github/workflows/abi.yaml b/.github/workflows/abi.yaml
|
||||
index dce09f5c..d5f8b477 100644
|
||||
--- a/.github/workflows/abi.yaml
|
||||
+++ b/.github/workflows/abi.yaml
|
||||
@@ -28,7 +28,7 @@ jobs:
|
||||
- name: get reference ABI
|
||||
id: reference
|
||||
continue-on-error: true
|
||||
- uses: dawidd6/action-download-artifact@v2
|
||||
+ uses: dawidd6/action-download-artifact@v6
|
||||
with:
|
||||
workflow: abi.yaml
|
||||
branch: ${{ env.ABI_BRANCH }}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From f7be16ac9fce97585a4552d49f3d3c54a93c9c17 Mon Sep 17 00:00:00 2001
|
||||
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
Date: Wed, 2 Jul 2014 12:49:53 -0500
|
||||
Subject: [PATCH] RH: Remove the property blacklist exception builtin
|
||||
|
|
@ -42,10 +42,10 @@ index 17e1b54a..10d13e98 100644
|
|||
udev_device_get_properties_list_entry(udev)) {
|
||||
|
||||
diff --git a/multipath/multipath.conf.5.in b/multipath/multipath.conf.5.in
|
||||
index 4388baad..af9fbb96 100644
|
||||
index 3c9ae097..ba291e11 100644
|
||||
--- a/multipath/multipath.conf.5.in
|
||||
+++ b/multipath/multipath.conf.5.in
|
||||
@@ -1469,9 +1469,14 @@ keywords. Both are regular expressions. For a full description of these keywords
|
||||
@@ -1470,9 +1470,14 @@ keywords. Both are regular expressions. For a full description of these keywords
|
||||
Regular expression for an udev property. All
|
||||
devices that have matching udev properties will be excluded/included.
|
||||
The handling of the \fIproperty\fR keyword is special,
|
||||
|
|
@ -61,7 +61,7 @@ index 4388baad..af9fbb96 100644
|
|||
.
|
||||
.RS
|
||||
.PP
|
||||
@@ -1482,10 +1487,6 @@ Blacklisting by missing properties is only applied to devices which do have the
|
||||
@@ -1483,10 +1488,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)
|
||||
set. Previously, it was applied to every device, possibly causing devices to be
|
||||
blacklisted because of temporary I/O error conditions.
|
||||
|
|
@ -73,10 +73,10 @@ index 4388baad..af9fbb96 100644
|
|||
.TP
|
||||
.B protocol
|
||||
diff --git a/tests/blacklist.c b/tests/blacklist.c
|
||||
index ba8dfd07..693db3fa 100644
|
||||
index ab3da619..52ae03e0 100644
|
||||
--- a/tests/blacklist.c
|
||||
+++ b/tests/blacklist.c
|
||||
@@ -384,9 +384,8 @@ static void test_property_missing(void **state)
|
||||
@@ -371,9 +371,8 @@ static void test_property_missing(void **state)
|
||||
{
|
||||
static struct udev_device udev = { "sdb", { "ID_FOO", "ID_BAZ", "ID_BAR", "ID_SERIAL", NULL } };
|
||||
conf.blist_property = blist_property_wwn;
|
||||
|
|
@ -87,7 +87,7 @@ index ba8dfd07..693db3fa 100644
|
|||
assert_int_equal(filter_property(&conf, &udev, 3, "ID_BLAH"),
|
||||
MATCH_NOTHING);
|
||||
assert_int_equal(filter_property(&conf, &udev, 3, ""),
|
||||
@@ -478,9 +477,7 @@ static void test_filter_path_missing1(void **state)
|
||||
@@ -465,9 +464,7 @@ static void test_filter_path_missing1(void **state)
|
||||
conf.blist_device = blist_device_foo_bar;
|
||||
conf.blist_protocol = blist_protocol_fcp;
|
||||
conf.blist_wwid = blist_wwid_xyzzy;
|
||||
|
|
@ -1,98 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Wilck <mwilck@suse.com>
|
||||
Date: Fri, 13 Sep 2024 09:45:25 +0200
|
||||
Subject: [PATCH] Github workflows: native.yml: use mosteo-actions/docker-run
|
||||
|
||||
We can't use "container:" any more because upload-artifact@v4 doesn't
|
||||
work on Debian Jessie.
|
||||
|
||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
---
|
||||
.github/workflows/native.yaml | 45 +++++++++++++++++++++--------------
|
||||
1 file changed, 27 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/.github/workflows/native.yaml b/.github/workflows/native.yaml
|
||||
index 500becaa..70d01c55 100644
|
||||
--- a/.github/workflows/native.yaml
|
||||
+++ b/.github/workflows/native.yaml
|
||||
@@ -35,17 +35,9 @@ jobs:
|
||||
- debian-bookworm
|
||||
- fedora-40
|
||||
- opensuse-leap
|
||||
- container: ghcr.io/mwilck/multipath-build-${{ matrix.os }}
|
||||
steps:
|
||||
- name: checkout
|
||||
uses: actions/checkout@v1
|
||||
- - name: build and test
|
||||
- if: ${{ matrix.os != 'debian-jessie' }}
|
||||
- run: make -j -Orecurse test
|
||||
- - name: build and test (jessie)
|
||||
- # On jessie, we use libreadline 5 (no licensing issue)
|
||||
- if: ${{ matrix.os == 'debian-jessie' }}
|
||||
- run: make -j -Orecurse READLINE=libreadline test
|
||||
|
||||
- name: set archive name
|
||||
# Leap containers have cpio but not tar
|
||||
@@ -54,8 +46,21 @@ jobs:
|
||||
- name: set archive name
|
||||
run: echo ARCHIVE_TGT=test-progs.tar >> $GITHUB_ENV
|
||||
if: ${{ matrix.os != 'opensuse-leap' }}
|
||||
- - name: create binary archive
|
||||
- run: make ${{ env.ARCHIVE_TGT }}
|
||||
+
|
||||
+ - name: build and test
|
||||
+ if: ${{ matrix.os != 'debian-jessie' }}
|
||||
+ uses: mosteo-actions/docker-run@v1
|
||||
+ with:
|
||||
+ image: ghcr.io/mwilck/multipath-build-${{ matrix.os }}
|
||||
+ command: -j -Orecurse ${{ env.ARCHIVE_TGT }} test
|
||||
+ - name: build and test (jessie)
|
||||
+ # On jessie, we use libreadline 5 (no licensing issue)
|
||||
+ if: ${{ matrix.os == 'debian-jessie' }}
|
||||
+ uses: mosteo-actions/docker-run@v1
|
||||
+ with:
|
||||
+ image: ghcr.io/mwilck/multipath-build-${{ matrix.os }}
|
||||
+ command: -j -Orecurse READLINE=libreadline ${{ env.ARCHIVE_TGT }} test
|
||||
+
|
||||
- name: upload binary archive
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
@@ -67,14 +72,18 @@ jobs:
|
||||
run: make clean
|
||||
- name: clang
|
||||
if: ${{ matrix.os != 'debian-jessie' }}
|
||||
- env:
|
||||
- CC: clang
|
||||
- run: make -j -Orecurse test
|
||||
+ uses: mosteo-actions/docker-run@v1
|
||||
+ with:
|
||||
+ image: ghcr.io/mwilck/multipath-build-${{ matrix.os }}
|
||||
+ params: -e CC=clang
|
||||
+ command: -j -Orecurse test
|
||||
- name: clang (jessie)
|
||||
if: ${{ matrix.os == 'debian-jessie' }}
|
||||
- env:
|
||||
- CC: clang
|
||||
- run: make READLINE=libreadline test
|
||||
+ uses: mosteo-actions/docker-run@v1
|
||||
+ with:
|
||||
+ image: ghcr.io/mwilck/multipath-build-${{ matrix.os }}
|
||||
+ params: -e CC=clang
|
||||
+ command: -j -Orecurse READLINE=libreadline test
|
||||
|
||||
root-test:
|
||||
runs-on: ubuntu-22.04
|
||||
@@ -103,10 +112,10 @@ jobs:
|
||||
with:
|
||||
name: native-${{ matrix.os }}
|
||||
- name: unpack binary archive
|
||||
- run: cpio -idv < native-${{ matrix.os }}/test-progs.cpio
|
||||
+ run: cpio -idv < test-progs.cpio
|
||||
if: ${{ matrix.os == 'opensuse-leap' }}
|
||||
- name: unpack binary archive
|
||||
- run: tar xfmv native-${{ matrix.os }}/test-progs.tar
|
||||
+ run: tar xfmv test-progs.tar
|
||||
if: ${{ matrix.os != 'opensuse-leap' }}
|
||||
|
||||
- name: run root tests
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From 5613e07ce9cabf2fdc402f6f102cc54bd1059800 Mon Sep 17 00:00:00 2001
|
||||
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
Date: Wed, 15 Oct 2014 10:39:30 -0500
|
||||
Subject: [PATCH] RH: don't start without a config file
|
||||
|
|
@ -18,14 +18,14 @@ Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|||
multipath/multipath.rules.in | 1 +
|
||||
multipathd/multipathd.8.in | 2 ++
|
||||
multipathd/multipathd.service.in | 1 +
|
||||
multipathd/multipathd.socket | 1 +
|
||||
multipathd/multipathd.socket.in | 1 +
|
||||
7 files changed, 25 insertions(+)
|
||||
|
||||
diff --git a/libmultipath/config.c b/libmultipath/config.c
|
||||
index 226ddecb..588ae9ee 100644
|
||||
index 8b424d18..b8317f4d 100644
|
||||
--- a/libmultipath/config.c
|
||||
+++ b/libmultipath/config.c
|
||||
@@ -962,6 +962,19 @@ int init_config__ (const char *file, struct config *conf)
|
||||
@@ -937,6 +937,19 @@ int init_config__ (const char *file, struct config *conf)
|
||||
}
|
||||
factorize_hwtable(conf->hwtable, builtin_hwtable_size, file);
|
||||
validate_pctable(conf->overrides, 0, file);
|
||||
|
|
@ -46,7 +46,7 @@ index 226ddecb..588ae9ee 100644
|
|||
|
||||
conf->processed_main_config = 1;
|
||||
diff --git a/libmultipath/config.h b/libmultipath/config.h
|
||||
index 94cdf252..534b6142 100644
|
||||
index 5b4ebf8c..2302eacc 100644
|
||||
--- a/libmultipath/config.h
|
||||
+++ b/libmultipath/config.h
|
||||
@@ -10,6 +10,7 @@
|
||||
|
|
@ -58,10 +58,10 @@ index 94cdf252..534b6142 100644
|
|||
enum devtypes {
|
||||
DEV_NONE,
|
||||
diff --git a/multipath/main.c b/multipath/main.c
|
||||
index 28e3a055..346acb61 100644
|
||||
index f2adcdeb..31012874 100644
|
||||
--- a/multipath/main.c
|
||||
+++ b/multipath/main.c
|
||||
@@ -843,11 +843,14 @@ main (int argc, char *argv[])
|
||||
@@ -834,11 +834,14 @@ main (int argc, char *argv[])
|
||||
char *dev = NULL;
|
||||
struct config *conf;
|
||||
bool enable_foreign = false;
|
||||
|
|
@ -76,7 +76,7 @@ index 28e3a055..346acb61 100644
|
|||
if (init_config(DEFAULT_CONFIGFILE))
|
||||
exit(RTVL_FAIL);
|
||||
if (atexit(uninit_config))
|
||||
@@ -1101,6 +1104,9 @@ main (int argc, char *argv[])
|
||||
@@ -1092,6 +1095,9 @@ main (int argc, char *argv[])
|
||||
while ((r = configure(conf, cmd, dev_type, dev)) == RTVL_RETRY)
|
||||
condlog(3, "restart multipath configuration process");
|
||||
|
||||
|
|
@ -99,7 +99,7 @@ index 2ac1972f..cc248231 100644
|
|||
ENV{DEVTYPE}!="partition", GOTO="test_dev"
|
||||
IMPORT{parent}="DM_MULTIPATH_DEVICE_PATH"
|
||||
diff --git a/multipathd/multipathd.8.in b/multipathd/multipathd.8.in
|
||||
index 7bc8806e..315884eb 100644
|
||||
index 8815e099..342e363e 100644
|
||||
--- a/multipathd/multipathd.8.in
|
||||
+++ b/multipathd/multipathd.8.in
|
||||
@@ -49,6 +49,8 @@ map regains its maximum performance and redundancy.
|
||||
|
|
@ -112,10 +112,10 @@ index 7bc8806e..315884eb 100644
|
|||
.
|
||||
.\" ----------------------------------------------------------------------------
|
||||
diff --git a/multipathd/multipathd.service.in b/multipathd/multipathd.service.in
|
||||
index 646001e6..72e44849 100644
|
||||
index eb58943c..ab166435 100644
|
||||
--- a/multipathd/multipathd.service.in
|
||||
+++ b/multipathd/multipathd.service.in
|
||||
@@ -6,6 +6,7 @@ Wants=systemd-udevd-kernel.socket @MODPROBE_UNIT@
|
||||
@@ -6,6 +6,7 @@ Wants=systemd-udevd-kernel.socket multipathd-queueing.service @MODPROBE_UNIT@
|
||||
After=systemd-udevd-kernel.socket @MODPROBE_UNIT@
|
||||
After=multipathd.socket systemd-remount-fs.service
|
||||
Before=initrd-cleanup.service
|
||||
|
|
@ -123,10 +123,10 @@ index 646001e6..72e44849 100644
|
|||
DefaultDependencies=no
|
||||
Conflicts=shutdown.target
|
||||
Conflicts=initrd-cleanup.service
|
||||
diff --git a/multipathd/multipathd.socket b/multipathd/multipathd.socket
|
||||
index 6a62f5fd..263b6b0c 100644
|
||||
--- a/multipathd/multipathd.socket
|
||||
+++ b/multipathd/multipathd.socket
|
||||
diff --git a/multipathd/multipathd.socket.in b/multipathd/multipathd.socket.in
|
||||
index 11002fce..5ed24757 100644
|
||||
--- a/multipathd/multipathd.socket.in
|
||||
+++ b/multipathd/multipathd.socket.in
|
||||
@@ -1,6 +1,7 @@
|
||||
[Unit]
|
||||
Description=multipathd control socket
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Wilck <mwilck@suse.com>
|
||||
Date: Fri, 13 Sep 2024 10:17:17 +0200
|
||||
Subject: [PATCH] GitHub workflows: native.yml: use extra job for clang
|
||||
|
||||
Running "make" in a container and "make clean" outside doesn't
|
||||
work (access right issues). So just use separate jobs.
|
||||
|
||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
---
|
||||
.github/workflows/native.yaml | 18 ++++++++++++++++--
|
||||
1 file changed, 16 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/.github/workflows/native.yaml b/.github/workflows/native.yaml
|
||||
index 70d01c55..95b53b87 100644
|
||||
--- a/.github/workflows/native.yaml
|
||||
+++ b/.github/workflows/native.yaml
|
||||
@@ -68,8 +68,22 @@ jobs:
|
||||
path: ${{ env.ARCHIVE_TGT }}
|
||||
overwrite: true
|
||||
|
||||
- - name: clean
|
||||
- run: make clean
|
||||
+ clang:
|
||||
+ runs-on: ubuntu-22.04
|
||||
+ strategy:
|
||||
+ fail-fast: false
|
||||
+ matrix:
|
||||
+ os:
|
||||
+ - debian-jessie
|
||||
+ - debian-buster
|
||||
+ - debian-bullseye
|
||||
+ - debian-bookworm
|
||||
+ - fedora-40
|
||||
+ - opensuse-leap
|
||||
+ steps:
|
||||
+ - name: checkout
|
||||
+ uses: actions/checkout@v1
|
||||
+
|
||||
- name: clang
|
||||
if: ${{ matrix.os != 'debian-jessie' }}
|
||||
uses: mosteo-actions/docker-run@v1
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From 283b5dd645663a2cf16f2813581772d7a84db6ad Mon Sep 17 00:00:00 2001
|
||||
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
Date: Fri, 25 Jan 2019 14:54:56 -0600
|
||||
Subject: [PATCH] RH: Fix nvme function missing argument
|
||||
|
|
@ -12,10 +12,10 @@ Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libmultipath/nvme/argconfig.h b/libmultipath/nvme/argconfig.h
|
||||
index e6c54453..0c6c9439 100644
|
||||
index b3caa7be..f91504c9 100644
|
||||
--- a/libmultipath/nvme/argconfig.h
|
||||
+++ b/libmultipath/nvme/argconfig.h
|
||||
@@ -76,7 +76,7 @@ struct argconfig_commandline_options {
|
||||
@@ -63,7 +63,7 @@ struct argconfig_commandline_options {
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Wilck <mwilck@suse.com>
|
||||
Date: Fri, 13 Sep 2024 10:30:47 +0200
|
||||
Subject: [PATCH] GitHub workflows: native.yaml: make test and archive
|
||||
separately
|
||||
|
||||
Avoid "text file busy" error on GitHub.
|
||||
|
||||
dmevents-test: Text file busy
|
||||
Makefile:74: recipe for target 'dmevents.out' failed
|
||||
|
||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
---
|
||||
.github/workflows/native.yaml | 17 +++++++++++++++--
|
||||
1 file changed, 15 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/.github/workflows/native.yaml b/.github/workflows/native.yaml
|
||||
index 95b53b87..f06b09df 100644
|
||||
--- a/.github/workflows/native.yaml
|
||||
+++ b/.github/workflows/native.yaml
|
||||
@@ -52,14 +52,27 @@ jobs:
|
||||
uses: mosteo-actions/docker-run@v1
|
||||
with:
|
||||
image: ghcr.io/mwilck/multipath-build-${{ matrix.os }}
|
||||
- command: -j -Orecurse ${{ env.ARCHIVE_TGT }} test
|
||||
+ command: -j -Orecurse test
|
||||
- name: build and test (jessie)
|
||||
# On jessie, we use libreadline 5 (no licensing issue)
|
||||
if: ${{ matrix.os == 'debian-jessie' }}
|
||||
uses: mosteo-actions/docker-run@v1
|
||||
with:
|
||||
image: ghcr.io/mwilck/multipath-build-${{ matrix.os }}
|
||||
- command: -j -Orecurse READLINE=libreadline ${{ env.ARCHIVE_TGT }} test
|
||||
+ command: -j -Orecurse READLINE=libreadline test
|
||||
+
|
||||
+ - name: create ${{ env.ARCHIVE_TGT }}
|
||||
+ if: ${{ matrix.os != 'debian-jessie' }}
|
||||
+ uses: mosteo-actions/docker-run@v1
|
||||
+ with:
|
||||
+ image: ghcr.io/mwilck/multipath-build-${{ matrix.os }}
|
||||
+ command: ${{ env.ARCHIVE_TGT }}
|
||||
+ - name: create ${{ env.ARCHIVE_TGT }} (jessie)
|
||||
+ if: ${{ matrix.os == 'debian-jessie' }}
|
||||
+ uses: mosteo-actions/docker-run@v1
|
||||
+ with:
|
||||
+ image: ghcr.io/mwilck/multipath-build-${{ matrix.os }}
|
||||
+ command: READLINE=libreadline ${{ env.ARCHIVE_TGT }}
|
||||
|
||||
- name: upload binary archive
|
||||
uses: actions/upload-artifact@v4
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From bf46f8029998498045bb055415ba3ff515c79eaa Mon Sep 17 00:00:00 2001
|
||||
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
Date: Wed, 19 Apr 2017 06:10:01 -0500
|
||||
Subject: [PATCH] RH: use rpm optflags if present
|
||||
|
|
@ -7,17 +7,16 @@ Use the passed in optflags when compiling as an RPM, and keep the
|
|||
default flags as close as possible to the current fedora flags, while
|
||||
still being generic.
|
||||
|
||||
Co-authored-by: Yaakov Selkowitz <yselkowi@redhat.com>
|
||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
---
|
||||
Makefile.inc | 25 ++++++++++++++++++-------
|
||||
1 file changed, 18 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/Makefile.inc b/Makefile.inc
|
||||
index 81cb61d2..a5024bb7 100644
|
||||
index ead89030..03aee175 100644
|
||||
--- a/Makefile.inc
|
||||
+++ b/Makefile.inc
|
||||
@@ -99,28 +99,39 @@ SYSTEMD_LIBDEPS := $(if $(SYSTEMD),$(if $(shell test $(SYSTEMD) -gt 209 && echo
|
||||
@@ -102,17 +102,29 @@ SYSTEMD_LIBDEPS := $(if $(SYSTEMD),$(if $(shell test $(SYSTEMD) -gt 209 && echo
|
||||
MODPROBE_UNIT := $(shell test "0$(SYSTEMD)" -lt 245 2>/dev/null || \
|
||||
echo "modprobe@dm_multipath.service")
|
||||
|
||||
|
|
@ -51,11 +50,13 @@ index 81cb61d2..a5024bb7 100644
|
|||
-D_FILE_OFFSET_BITS=64 \
|
||||
-DBIN_DIR=\"$(bindir)\" -DMULTIPATH_DIR=\"$(TGTDIR)$(plugindir)\" \
|
||||
-DRUNTIME_DIR=\"$(runtimedir)\" -DCONFIG_DIR=\"$(TGTDIR)$(configdir)\" \
|
||||
-DDEFAULT_CONFIGFILE=\"$(TGTDIR)$(configfile)\" -DSTATE_DIR=\"$(TGTDIR)$(statedir)\" \
|
||||
-DEXTRAVERSION=\"$(EXTRAVERSION)\" -MMD -MP
|
||||
-CFLAGS := -std=gnu99 $(CFLAGS) $(OPTFLAGS) $(WARNFLAGS) -pipe \
|
||||
@@ -121,12 +133,11 @@ CPPFLAGS := $(FORTIFY_OPT) $(CPPFLAGS) $(D_URCU_VERSION) \
|
||||
-DABSTRACT_SOCKET=\"$(abstract_socket)\" -DPATHNAME_SOCKET=\"$(pathname_socket)\" \
|
||||
-DWSTRINGOP_TRUNCATION=$(if $(WSTRINGOP_TRUNCATION),1,0) \
|
||||
-MMD -MP
|
||||
-CFLAGS := -std=$(C_STD) $(CFLAGS) $(OPTFLAGS) $(WARNFLAGS) -pipe \
|
||||
- -fexceptions
|
||||
+CFLAGS := -std=gnu11 $(CFLAGS) $(OPTFLAGS) $(WARNFLAGS) -pipe
|
||||
+CFLAGS := -std=$(C_STD) $(CFLAGS) $(OPTFLAGS) $(WARNFLAGS) -pipe
|
||||
BIN_CFLAGS := -fPIE -DPIE
|
||||
LIB_CFLAGS := -fPIC
|
||||
SHARED_FLAGS := -shared
|
||||
|
|
@ -1,133 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Wilck <mwilck@suse.com>
|
||||
Date: Thu, 14 Nov 2024 16:02:38 +0100
|
||||
Subject: [PATCH] GitHub workflows: enable unit tests for stable branches
|
||||
|
||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
---
|
||||
.github/workflows/build-and-unittest.yaml | 2 ++
|
||||
.github/workflows/foreign.yaml | 2 ++
|
||||
.github/workflows/multiarch-stable.yaml | 2 ++
|
||||
.github/workflows/multiarch.yaml | 2 ++
|
||||
.github/workflows/native.yaml | 2 ++
|
||||
.github/workflows/rolling.yaml | 2 ++
|
||||
6 files changed, 12 insertions(+)
|
||||
|
||||
diff --git a/.github/workflows/build-and-unittest.yaml b/.github/workflows/build-and-unittest.yaml
|
||||
index a838f9a2..1a727e14 100644
|
||||
--- a/.github/workflows/build-and-unittest.yaml
|
||||
+++ b/.github/workflows/build-and-unittest.yaml
|
||||
@@ -5,10 +5,12 @@ on:
|
||||
- master
|
||||
- queue
|
||||
- tip
|
||||
+ - 'stable-*'
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
- queue
|
||||
+ - 'stable-*'
|
||||
jobs:
|
||||
jammy:
|
||||
runs-on: ubuntu-22.04
|
||||
diff --git a/.github/workflows/foreign.yaml b/.github/workflows/foreign.yaml
|
||||
index d68650df..0f80957b 100644
|
||||
--- a/.github/workflows/foreign.yaml
|
||||
+++ b/.github/workflows/foreign.yaml
|
||||
@@ -5,6 +5,7 @@ on:
|
||||
- master
|
||||
- queue
|
||||
- tip
|
||||
+ - 'stable-*'
|
||||
paths:
|
||||
- '.github/workflows/foreign.yaml'
|
||||
- '**.h'
|
||||
@@ -15,6 +16,7 @@ on:
|
||||
branches:
|
||||
- master
|
||||
- queue
|
||||
+ - 'stable-*'
|
||||
paths:
|
||||
- '.github/workflows/foreign.yaml'
|
||||
- '**.h'
|
||||
diff --git a/.github/workflows/multiarch-stable.yaml b/.github/workflows/multiarch-stable.yaml
|
||||
index e51d383c..ffede53d 100644
|
||||
--- a/.github/workflows/multiarch-stable.yaml
|
||||
+++ b/.github/workflows/multiarch-stable.yaml
|
||||
@@ -5,6 +5,7 @@ on:
|
||||
- master
|
||||
- queue
|
||||
- tip
|
||||
+ - 'stable-*'
|
||||
paths:
|
||||
- '.github/workflows/multiarch-stable.yaml'
|
||||
- '**.h'
|
||||
@@ -15,6 +16,7 @@ on:
|
||||
branches:
|
||||
- master
|
||||
- queue
|
||||
+ - 'stable-*'
|
||||
paths:
|
||||
- '.github/workflows/multiarch-stable.yaml'
|
||||
- '**.h'
|
||||
diff --git a/.github/workflows/multiarch.yaml b/.github/workflows/multiarch.yaml
|
||||
index df95a02f..d2b833a4 100644
|
||||
--- a/.github/workflows/multiarch.yaml
|
||||
+++ b/.github/workflows/multiarch.yaml
|
||||
@@ -5,6 +5,7 @@ on:
|
||||
- master
|
||||
- queue
|
||||
- tip
|
||||
+ - 'stable-*'
|
||||
paths:
|
||||
- '.github/workflows/multiarch.yaml'
|
||||
- '**.h'
|
||||
@@ -15,6 +16,7 @@ on:
|
||||
branches:
|
||||
- master
|
||||
- queue
|
||||
+ - 'stable-*'
|
||||
paths:
|
||||
- '.github/workflows/multiarch.yaml'
|
||||
- '**.h'
|
||||
diff --git a/.github/workflows/native.yaml b/.github/workflows/native.yaml
|
||||
index f06b09df..c9d9df9e 100644
|
||||
--- a/.github/workflows/native.yaml
|
||||
+++ b/.github/workflows/native.yaml
|
||||
@@ -5,6 +5,7 @@ on:
|
||||
- master
|
||||
- queue
|
||||
- tip
|
||||
+ - 'stable-*'
|
||||
paths:
|
||||
- '.github/workflows/native.yaml'
|
||||
- '**.h'
|
||||
@@ -15,6 +16,7 @@ on:
|
||||
branches:
|
||||
- master
|
||||
- queue
|
||||
+ - 'stable-*'
|
||||
paths:
|
||||
- '.github/workflows/native.yaml'
|
||||
- '**.h'
|
||||
diff --git a/.github/workflows/rolling.yaml b/.github/workflows/rolling.yaml
|
||||
index 3536b944..66af7a44 100644
|
||||
--- a/.github/workflows/rolling.yaml
|
||||
+++ b/.github/workflows/rolling.yaml
|
||||
@@ -5,6 +5,7 @@ on:
|
||||
- master
|
||||
- queue
|
||||
- tip
|
||||
+ - 'stable-*'
|
||||
paths:
|
||||
- '.github/workflows/rolling.yaml'
|
||||
- '**.h'
|
||||
@@ -15,6 +16,7 @@ on:
|
||||
branches:
|
||||
- master
|
||||
- queue
|
||||
+ - 'stable-*'
|
||||
paths:
|
||||
- '.github/workflows/rolling.yaml'
|
||||
- '**.h'
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From 29e5c6d6e2177e73d1be2ed2af66c1007487bf60 Mon Sep 17 00:00:00 2001
|
||||
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
Date: Thu, 16 Oct 2014 15:49:01 -0500
|
||||
Subject: [PATCH] RH: add mpathconf
|
||||
|
|
@ -23,10 +23,10 @@ Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|||
create mode 100644 multipath/mpathconf.8
|
||||
|
||||
diff --git a/.github/actions/spelling/expect.txt b/.github/actions/spelling/expect.txt
|
||||
index 4ac57510..3602a071 100644
|
||||
index a5856bcc..5c9113ba 100644
|
||||
--- a/.github/actions/spelling/expect.txt
|
||||
+++ b/.github/actions/spelling/expect.txt
|
||||
@@ -126,9 +126,11 @@ Marzinski
|
||||
@@ -131,9 +131,11 @@ Marzinski
|
||||
misdetection
|
||||
mpath
|
||||
mpathb
|
||||
|
|
@ -38,7 +38,7 @@ index 4ac57510..3602a071 100644
|
|||
multipathc
|
||||
multipathd
|
||||
multipathed
|
||||
@@ -146,6 +148,7 @@ ontap
|
||||
@@ -154,6 +156,7 @@ ontap
|
||||
OOM
|
||||
opensvc
|
||||
OPTFLAGS
|
||||
|
|
@ -47,10 +47,10 @@ index 4ac57510..3602a071 100644
|
|||
partx
|
||||
pathgroup
|
||||
diff --git a/libmultipath/config.c b/libmultipath/config.c
|
||||
index 588ae9ee..3cb8449c 100644
|
||||
index b8317f4d..0bbaa981 100644
|
||||
--- a/libmultipath/config.c
|
||||
+++ b/libmultipath/config.c
|
||||
@@ -964,6 +964,8 @@ int init_config__ (const char *file, struct config *conf)
|
||||
@@ -939,6 +939,8 @@ int init_config__ (const char *file, struct config *conf)
|
||||
validate_pctable(conf->overrides, 0, file);
|
||||
} else {
|
||||
condlog(0, "/etc/multipath.conf does not exist, blacklisting all devices.");
|
||||
|
|
@ -1,110 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Wilck <mwilck@suse.com>
|
||||
Date: Thu, 14 Nov 2024 16:51:05 +0100
|
||||
Subject: [PATCH] GitHub Workflows: add abi check for stable branches
|
||||
|
||||
The ABI should never change on a stable branch. This workflow
|
||||
asserts that.
|
||||
|
||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
---
|
||||
.github/workflows/abi-stable.yaml | 89 +++++++++++++++++++++++++++++++
|
||||
1 file changed, 89 insertions(+)
|
||||
create mode 100644 .github/workflows/abi-stable.yaml
|
||||
|
||||
diff --git a/.github/workflows/abi-stable.yaml b/.github/workflows/abi-stable.yaml
|
||||
new file mode 100644
|
||||
index 00000000..a6746f23
|
||||
--- /dev/null
|
||||
+++ b/.github/workflows/abi-stable.yaml
|
||||
@@ -0,0 +1,89 @@
|
||||
+name: check-abi for stable branch
|
||||
+on:
|
||||
+ push:
|
||||
+ branches:
|
||||
+ - 'stable-*'
|
||||
+ paths:
|
||||
+ - '.github/workflows/abi-stable.yaml'
|
||||
+ - '**.h'
|
||||
+ - '**.c'
|
||||
+ - '**.version'
|
||||
+ pull_request:
|
||||
+ branches:
|
||||
+ - 'stable-*'
|
||||
+ workflow_dispatch:
|
||||
+
|
||||
+jobs:
|
||||
+ reference-abi:
|
||||
+ runs-on: ubuntu-20.04
|
||||
+ steps:
|
||||
+ - name: get parent tag
|
||||
+ run: >
|
||||
+ echo ${{ github.ref }} |
|
||||
+ sed -E 's,refs/heads/stable-([0-9]\.[0-9]*)\.y,PARENT_TAG=\1.0,' >> $GITHUB_ENV
|
||||
+ - name: assert parent tag
|
||||
+ run: /bin/false
|
||||
+ if: ${{ env.PARENT_TAG == '' }}
|
||||
+ - name: update
|
||||
+ run: sudo apt-get update
|
||||
+ - name: dependencies
|
||||
+ run: >
|
||||
+ sudo apt-get install --yes gcc
|
||||
+ gcc make pkg-config abigail-tools
|
||||
+ libdevmapper-dev libreadline-dev libaio-dev libsystemd-dev
|
||||
+ libudev-dev libjson-c-dev liburcu-dev libcmocka-dev libedit-dev
|
||||
+ - name: checkout ${{ env.PARENT_TAG }}
|
||||
+ uses: actions/checkout@v4
|
||||
+ with:
|
||||
+ ref: ${{ env.PARENT_TAG }}
|
||||
+ - name: build ABI for ${{ env.PARENT_TAG }}
|
||||
+ run: make -j$(grep -c ^processor /proc/cpuinfo) -Orecurse abi
|
||||
+ - name: save ABI
|
||||
+ uses: actions/upload-artifact@v4
|
||||
+ with:
|
||||
+ name: multipath-abi-${{ env.PARENT_TAG }}
|
||||
+ path: abi
|
||||
+
|
||||
+ check-abi:
|
||||
+ runs-on: ubuntu-20.04
|
||||
+ needs: reference-abi
|
||||
+ steps:
|
||||
+ - name: get parent tag
|
||||
+ run: >
|
||||
+ echo ${{ github.ref }} |
|
||||
+ sed -E 's,refs/heads/stable-([0-9]\.[0-9]*)\.y,PARENT_TAG=\1.0,' >> $GITHUB_ENV
|
||||
+ - name: assert parent tag
|
||||
+ run: /bin/false
|
||||
+ if: ${{ env.PARENT_TAG == '' }}
|
||||
+ - name: checkout ${{ env.PARENT_TAG }}
|
||||
+ uses: actions/checkout@v4
|
||||
+ with:
|
||||
+ ref: ${{ env.PARENT_TAG }}
|
||||
+ - name: download ABI for ${{ env.PARENT_TAG }}
|
||||
+ id: download_abi
|
||||
+ uses: actions/download-artifact@v4
|
||||
+ with:
|
||||
+ name: multipath-abi-${{ env.PARENT_TAG }}
|
||||
+ path: reference-abi
|
||||
+ - name: update
|
||||
+ run: sudo apt-get update
|
||||
+ if: steps.download_abi.outcome != 'success'
|
||||
+ - name: dependencies
|
||||
+ run: >
|
||||
+ sudo apt-get install --yes gcc
|
||||
+ gcc make pkg-config abigail-tools
|
||||
+ libdevmapper-dev libreadline-dev libaio-dev libsystemd-dev
|
||||
+ libudev-dev libjson-c-dev liburcu-dev libcmocka-dev libedit-dev
|
||||
+ - name: check ABI of ${{ github.ref }} against ${{ env.PARENT_TAG }}
|
||||
+ id: check_abi
|
||||
+ run: make -j$(grep -c ^processor /proc/cpuinfo) -Orecurse abi-test
|
||||
+ continue-on-error: true
|
||||
+ - name: save differences
|
||||
+ if: ${{ steps.check_abi.outcome != 'success' }}
|
||||
+ uses: actions/upload-artifact@v4
|
||||
+ with:
|
||||
+ name: abi-test
|
||||
+ path: abi-test
|
||||
+ - name: fail
|
||||
+ run: /bin/false
|
||||
+ if: steps.check_abi.outcome != 'success'
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From d6ad888bad3850bb0a342ebcdc9fd78773eb3b2a Mon Sep 17 00:00:00 2001
|
||||
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
Date: Fri, 17 Oct 2014 11:20:34 -0500
|
||||
Subject: [PATCH] RH: add wwids from kernel cmdline mpath.wwids with -A
|
||||
|
|
@ -20,10 +20,10 @@ Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|||
3 files changed, 59 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/multipath/main.c b/multipath/main.c
|
||||
index 346acb61..adc50d69 100644
|
||||
index 31012874..a667c2ee 100644
|
||||
--- a/multipath/main.c
|
||||
+++ b/multipath/main.c
|
||||
@@ -120,7 +120,7 @@ usage (char * progname)
|
||||
@@ -111,7 +111,7 @@ usage (char * progname)
|
||||
fprintf (stderr, " %s [-v level] [-R retries] -F\n", progname);
|
||||
fprintf (stderr, " %s [-v level] [-l|-ll] [device]\n", progname);
|
||||
fprintf (stderr, " %s [-v level] [-a|-w] device\n", progname);
|
||||
|
|
@ -32,7 +32,7 @@ index 346acb61..adc50d69 100644
|
|||
fprintf (stderr, " %s [-v level] [-i] [-c|-C] device\n", progname);
|
||||
fprintf (stderr, " %s [-v level] [-i] [-u|-U]\n", progname);
|
||||
fprintf (stderr, " %s [-h|-t|-T]\n", progname);
|
||||
@@ -134,6 +134,8 @@ usage (char * progname)
|
||||
@@ -125,6 +125,8 @@ usage (char * progname)
|
||||
" -f flush a multipath device map\n"
|
||||
" -F flush all multipath device maps\n"
|
||||
" -a add a device wwid to the wwids file\n"
|
||||
|
|
@ -41,7 +41,7 @@ index 346acb61..adc50d69 100644
|
|||
" -c check if a device should be a path in a multipath device\n"
|
||||
" -C check if a multipath device has usable paths\n"
|
||||
" -q allow queue_if_no_path when multipathd is not running\n"
|
||||
@@ -449,6 +451,50 @@ static void cleanup_vecs(void)
|
||||
@@ -440,6 +442,50 @@ static void cleanup_vecs(void)
|
||||
free_pathvec(vecs.pathvec, FREE_PATHS);
|
||||
}
|
||||
|
||||
|
|
@ -92,7 +92,7 @@ index 346acb61..adc50d69 100644
|
|||
static int
|
||||
configure (struct config *conf, enum mpath_cmds cmd,
|
||||
enum devtypes dev_type, char *devpath)
|
||||
@@ -860,7 +906,7 @@ main (int argc, char *argv[])
|
||||
@@ -851,7 +897,7 @@ main (int argc, char *argv[])
|
||||
condlog(1, "failed to register cleanup handler for vecs: %m");
|
||||
if (atexit(cleanup_bindings))
|
||||
condlog(1, "failed to register cleanup handler for bindings: %m");
|
||||
|
|
@ -101,7 +101,7 @@ index 346acb61..adc50d69 100644
|
|||
switch(arg) {
|
||||
case 'v':
|
||||
if (!isdigit(optarg[0])) {
|
||||
@@ -931,6 +977,10 @@ main (int argc, char *argv[])
|
||||
@@ -922,6 +968,10 @@ main (int argc, char *argv[])
|
||||
case 'T':
|
||||
cmd = CMD_DUMP_CONFIG;
|
||||
break;
|
||||
|
|
@ -138,14 +138,14 @@ index b88e9a4c..edd742aa 100644
|
|||
Remove the WWID for the specified device from the WWIDs file.
|
||||
.
|
||||
diff --git a/multipathd/multipathd.service.in b/multipathd/multipathd.service.in
|
||||
index 72e44849..69a6c39d 100644
|
||||
index ab166435..1ec08c6e 100644
|
||||
--- a/multipathd/multipathd.service.in
|
||||
+++ b/multipathd/multipathd.service.in
|
||||
@@ -17,6 +17,7 @@ ConditionVirtualization=!container
|
||||
@@ -19,6 +19,7 @@ StartLimitBurst=3
|
||||
[Service]
|
||||
Type=notify
|
||||
NotifyAccess=main
|
||||
+ExecStartPre=-@BINDIR@/multipath -A
|
||||
ExecStart=@BINDIR@/multipathd -d -s
|
||||
ExecReload=@BINDIR@/multipathd reconfigure
|
||||
TasksMax=infinity
|
||||
Restart=on-failure
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From 064d761121e7e2c7b63ab280e341d8010a413119 Mon Sep 17 00:00:00 2001
|
||||
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
Date: Thu, 7 Jun 2018 17:43:52 -0500
|
||||
Subject: [PATCH] RH: reset default find_mutipaths value to off
|
||||
|
|
@ -14,7 +14,7 @@ Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/libmultipath/defaults.h b/libmultipath/defaults.h
|
||||
index 02f7e57c..cd03fd1a 100644
|
||||
index 134b690a..e2fe7ac4 100644
|
||||
--- a/libmultipath/defaults.h
|
||||
+++ b/libmultipath/defaults.h
|
||||
@@ -24,7 +24,7 @@
|
||||
|
|
@ -27,10 +27,10 @@ index 02f7e57c..cd03fd1a 100644
|
|||
#define DEFAULT_DEV_LOSS_TMO 600
|
||||
#define DEFAULT_RETAIN_HWHANDLER RETAIN_HWHANDLER_ON
|
||||
diff --git a/multipath/multipath.conf.5.in b/multipath/multipath.conf.5.in
|
||||
index af9fbb96..0c1eff40 100644
|
||||
index ba291e11..b8389db3 100644
|
||||
--- a/multipath/multipath.conf.5.in
|
||||
+++ b/multipath/multipath.conf.5.in
|
||||
@@ -1226,7 +1226,7 @@ as non-multipath and passed on to upper layers.
|
||||
@@ -1227,7 +1227,7 @@ as non-multipath and passed on to upper layers.
|
||||
\fBNote:\fR this may cause delays during device detection if
|
||||
there are single-path devices which aren\'t blacklisted.
|
||||
.TP
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Wilck <mwilck@suse.com>
|
||||
Date: Tue, 12 Nov 2024 13:06:10 +0100
|
||||
Subject: [PATCH] libmultipath: dm_get_maps(): don't bail out for single-map
|
||||
failures
|
||||
|
||||
dm_get_maps() traverses the entire list of dm maps. We shouldn't
|
||||
give up just because probing a single map failed.
|
||||
|
||||
Fixes: bf3a4ad ("libmultipath: simplify dm_get_maps()")
|
||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
---
|
||||
libmultipath/devmapper.c | 4 +---
|
||||
1 file changed, 1 insertion(+), 3 deletions(-)
|
||||
|
||||
diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c
|
||||
index c497c225..52bfe9ce 100644
|
||||
--- a/libmultipath/devmapper.c
|
||||
+++ b/libmultipath/devmapper.c
|
||||
@@ -1262,10 +1262,8 @@ int dm_get_maps(vector mp)
|
||||
}
|
||||
vector_set_slot(mp, mpp);
|
||||
break;
|
||||
- case DMP_NO_MATCH:
|
||||
- break;
|
||||
default:
|
||||
- return 1;
|
||||
+ break;
|
||||
}
|
||||
next = names->next;
|
||||
names = (void *) names + next;
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Wilck <mwilck@suse.com>
|
||||
Date: Thu, 31 Oct 2024 12:08:08 +0100
|
||||
Subject: [PATCH] 11-dm-mpath.rules.in: import DM_COLDPLUG_SUSPENDED only once
|
||||
|
||||
We import DM_COLDPLUG_SUSPENDED in all code flows below mpath_coldplug_end.
|
||||
Clarify this in the code.
|
||||
|
||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
||||
Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
---
|
||||
multipath/11-dm-mpath.rules.in | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/multipath/11-dm-mpath.rules.in b/multipath/11-dm-mpath.rules.in
|
||||
index 30647b99..67838261 100644
|
||||
--- a/multipath/11-dm-mpath.rules.in
|
||||
+++ b/multipath/11-dm-mpath.rules.in
|
||||
@@ -24,12 +24,13 @@ ENV{DM_UDEV_RULES_VSN}=="1|2", ENV{.DM_SUSPENDED}!="1", ENV{DISK_RO}!="1", \
|
||||
ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}="", GOTO="scan_import"
|
||||
LABEL="mpath_coldplug_end"
|
||||
|
||||
+IMPORT{db}="DM_COLDPLUG_SUSPENDED"
|
||||
+
|
||||
# If this uevent didn't come from dm, don't try to update the
|
||||
# device state
|
||||
# Note that .MPATH_DEVICE_READY_OLD=="" here. Thus we won't activate the
|
||||
# device below at mpath_is_ready, which is correct.
|
||||
ENV{DM_COOKIE}!="?*", ENV{DM_ACTION}!="PATH_*", \
|
||||
- IMPORT{db}="DM_COLDPLUG_SUSPENDED", \
|
||||
GOTO="check_mpath_ready"
|
||||
|
||||
ENV{.MPATH_DEVICE_READY_OLD}="$env{MPATH_DEVICE_READY}"
|
||||
@@ -67,7 +68,6 @@ LABEL="check_mpath_unchanged"
|
||||
# A previous coldplug event occurred while the device was suspended.
|
||||
# Activation might have been partially skipped. Activate the device now,
|
||||
# i.e. disable the MPATH_UNCHANGED logic and set DM_ACTIVATION=1.
|
||||
-IMPORT{db}="DM_COLDPLUG_SUSPENDED"
|
||||
ENV{DM_COLDPLUG_SUSPENDED}=="1", ENV{.DM_SUSPENDED}!="1", \
|
||||
ENV{DM_ACTIVATION}="1", ENV{MPATH_UNCHANGED}="0", \
|
||||
PROGRAM="@SYSDIR_BIN@/logger -t 11-dm-mpath.rules -p daemon.notice \"Forcing activation of previously suspended device\"", \
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From 335b8eb2773b07a602e84e14c1f3e289a9b25b5a Mon Sep 17 00:00:00 2001
|
||||
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
Date: Thu, 11 Apr 2019 13:25:42 -0500
|
||||
Subject: [PATCH] RH: attempt to get ANA info via sysfs first
|
||||
|
|
@ -13,10 +13,10 @@ Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|||
1 file changed, 29 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/libmultipath/prioritizers/ana.c b/libmultipath/prioritizers/ana.c
|
||||
index e9827dca..80a32aa3 100644
|
||||
index 34527b22..4eaa3cc3 100644
|
||||
--- a/libmultipath/prioritizers/ana.c
|
||||
+++ b/libmultipath/prioritizers/ana.c
|
||||
@@ -24,6 +24,7 @@
|
||||
@@ -23,6 +23,7 @@
|
||||
#include "prio.h"
|
||||
#include "util.h"
|
||||
#include "structs.h"
|
||||
|
|
@ -24,7 +24,7 @@ index e9827dca..80a32aa3 100644
|
|||
|
||||
enum {
|
||||
ANA_ERR_GETCTRL_FAILED = 1,
|
||||
@@ -36,6 +37,7 @@ enum {
|
||||
@@ -35,6 +36,7 @@ enum {
|
||||
ANA_ERR_GETNS_FAILED,
|
||||
ANA_ERR_NO_MEMORY,
|
||||
ANA_ERR_NO_INFORMATION,
|
||||
|
|
@ -32,7 +32,7 @@ index e9827dca..80a32aa3 100644
|
|||
};
|
||||
|
||||
static const char *ana_errmsg[] = {
|
||||
@@ -49,6 +51,7 @@ static const char *ana_errmsg[] = {
|
||||
@@ -48,6 +50,7 @@ static const char *ana_errmsg[] = {
|
||||
[ANA_ERR_GETNS_FAILED] = "couldn't get namespace info",
|
||||
[ANA_ERR_NO_MEMORY] = "out of memory",
|
||||
[ANA_ERR_NO_INFORMATION] = "invalid fd",
|
||||
|
|
@ -40,7 +40,7 @@ index e9827dca..80a32aa3 100644
|
|||
};
|
||||
|
||||
static const char *anas_string[] = {
|
||||
@@ -107,6 +110,27 @@ static int get_ana_state(__u32 nsid, __u32 anagrpid, void *ana_log,
|
||||
@@ -106,6 +109,27 @@ static int get_ana_state(__u32 nsid, __u32 anagrpid, void *ana_log,
|
||||
return -ANA_ERR_GETANAS_NOTFOUND;
|
||||
}
|
||||
|
||||
|
|
@ -68,7 +68,7 @@ index e9827dca..80a32aa3 100644
|
|||
static int get_ana_info(struct path * pp)
|
||||
{
|
||||
int rc;
|
||||
@@ -209,8 +233,11 @@ int getprio(struct path *pp, __attribute__((unused)) char *args)
|
||||
@@ -208,8 +232,11 @@ int getprio(struct path *pp, __attribute__((unused)) char *args)
|
||||
|
||||
if (pp->fd < 0)
|
||||
rc = -ANA_ERR_NO_INFORMATION;
|
||||
|
|
@ -1,66 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Wilck <mwilck@suse.com>
|
||||
Date: Thu, 31 Oct 2024 12:59:03 +0100
|
||||
Subject: [PATCH] 11-dm-mpath.rules.in: handle inactive suspended devices
|
||||
correctly
|
||||
|
||||
Since b22c273 ("11-dm-mpath.rules: Don't force activation while device is
|
||||
suspended"), we've handled the case where a device is suspended while
|
||||
an uevent is processed (e.g. because multipathd is reloading the
|
||||
map again at the same time). But we were missing the case where
|
||||
The device had never been initialized before. If .MPATH_DEVICE_READY_OLD
|
||||
was empty, we'd jump to scan_import without setting MPATH_DEVICE_READY
|
||||
to 0. This can cause a device not to be fully activated at boot time,
|
||||
because in follow-up uevents we'd assume that the device had already
|
||||
been set up.
|
||||
|
||||
Treat the case in which an uevent is processed for a previously not
|
||||
fully set-up, suspended device like other situations where we set
|
||||
MPATH_DEVICE_READY to 0.
|
||||
|
||||
Fixes: b22c273 ("11-dm-mpath.rules: Don't force activation while device is
|
||||
suspended")
|
||||
Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
|
||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
---
|
||||
multipath/11-dm-mpath.rules.in | 19 +++++++++++--------
|
||||
1 file changed, 11 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/multipath/11-dm-mpath.rules.in b/multipath/11-dm-mpath.rules.in
|
||||
index 67838261..20f8c6ac 100644
|
||||
--- a/multipath/11-dm-mpath.rules.in
|
||||
+++ b/multipath/11-dm-mpath.rules.in
|
||||
@@ -35,6 +35,13 @@ ENV{DM_COOKIE}!="?*", ENV{DM_ACTION}!="PATH_*", \
|
||||
|
||||
ENV{.MPATH_DEVICE_READY_OLD}="$env{MPATH_DEVICE_READY}"
|
||||
|
||||
+# If the device wasn't ready previously and is currently suspended,
|
||||
+# we have to postpone the activation until the next event.
|
||||
+# In this case, we have to set MPATH_DEVICE_READY=0; otherwise, the
|
||||
+# MPATH_UNCHANGED logic will cause later rules to skipped in the next event.
|
||||
+ENV{.MPATH_DEVICE_READY_OLD}!="1", ENV{.DM_SUSPENDED}=="1", \
|
||||
+ ENV{MPATH_DEVICE_READY}="0", GOTO="check_mpath_unchanged"
|
||||
+
|
||||
# multipath sets DM_SUBSYSTEM_UDEV_FLAG2 when it reloads a
|
||||
# table with no active devices. If this happens, mark the
|
||||
# device not ready
|
||||
@@ -106,14 +113,10 @@ GOTO="scan_import"
|
||||
LABEL="mpath_is_ready"
|
||||
|
||||
# If the device comes back online, set DM_ACTIVATION so that
|
||||
-# upper layers do a rescan. If the device is currently suspended,
|
||||
-# we have to postpone the activation until the next event.
|
||||
-# In this case, we have to set MPATH_DEVICE_READY=0; otherwise, the
|
||||
-# MPATH_UNCHANGED logic will cause later rules to skipped in the next event.
|
||||
-ENV{.MPATH_DEVICE_READY_OLD}!="0", GOTO="scan_import"
|
||||
-ENV{.DM_SUSPENDED}=="1", ENV{MPATH_DEVICE_READY}="0", GOTO="scan_import"
|
||||
-
|
||||
-ENV{DM_ACTIVATION}="1", ENV{MPATH_UNCHANGED}="0"
|
||||
+# upper layers will do a rescan. Don't do this if .MPATH_DEVICE_READY_OLD
|
||||
+# is just empty (see comment above the DM_COOKIE test above).
|
||||
+ENV{.MPATH_DEVICE_READY_OLD}=="0", \
|
||||
+ ENV{DM_ACTIVATION}="1", ENV{MPATH_UNCHANGED}="0"
|
||||
|
||||
# The code to check multipath state ends here. We need to set
|
||||
# properties and symlinks regardless whether the map is usable or
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From 137c96d16b6bb03d8a52854e152db4ee36b7d9e4 Mon Sep 17 00:00:00 2001
|
||||
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
Date: Thu, 25 Mar 2021 13:05:10 -0500
|
||||
Subject: [PATCH] RH: make parse_vpd_pg83 match scsi_id output
|
||||
|
|
@ -14,10 +14,10 @@ Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|||
2 files changed, 8 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c
|
||||
index 5043330c..e14507e8 100644
|
||||
index 31db8758..21cfcc73 100644
|
||||
--- a/libmultipath/discovery.c
|
||||
+++ b/libmultipath/discovery.c
|
||||
@@ -1221,13 +1221,9 @@ parse_vpd_pg83(const unsigned char *in, size_t in_len,
|
||||
@@ -1225,13 +1225,9 @@ parse_vpd_pg83(const unsigned char *in, size_t in_len,
|
||||
good_len = 8;
|
||||
break;
|
||||
case 2:
|
||||
|
|
@ -33,7 +33,7 @@ index 5043330c..e14507e8 100644
|
|||
good_len = 8;
|
||||
break;
|
||||
default:
|
||||
@@ -1245,10 +1241,6 @@ parse_vpd_pg83(const unsigned char *in, size_t in_len,
|
||||
@@ -1249,10 +1245,6 @@ parse_vpd_pg83(const unsigned char *in, size_t in_len,
|
||||
break;
|
||||
case 0x8:
|
||||
/* SCSI Name: Prio 3 */
|
||||
|
|
@ -1,78 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Wilck <mwilck@suse.com>
|
||||
Date: Thu, 31 Oct 2024 13:11:21 +0100
|
||||
Subject: [PATCH] 11-dm-mpath.rules.in: clarify DM_ACTIVATION logic
|
||||
|
||||
Our code is always setting MPATH_UNCHANGED and DM_ACTIVATION in
|
||||
pairs. While DM_ACTIVATION is a global DM property, MPATH_UNCHANGED
|
||||
is owned by us. Just set MPATH_UNCHANGED, and adapt DM_ACTIVATION
|
||||
when necessary just in one place.
|
||||
|
||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
||||
Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
---
|
||||
multipath/11-dm-mpath.rules.in | 21 ++++++++++++---------
|
||||
1 file changed, 12 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/multipath/11-dm-mpath.rules.in b/multipath/11-dm-mpath.rules.in
|
||||
index 20f8c6ac..a2655cb2 100644
|
||||
--- a/multipath/11-dm-mpath.rules.in
|
||||
+++ b/multipath/11-dm-mpath.rules.in
|
||||
@@ -74,25 +74,25 @@ LABEL="check_mpath_unchanged"
|
||||
|
||||
# A previous coldplug event occurred while the device was suspended.
|
||||
# Activation might have been partially skipped. Activate the device now,
|
||||
-# i.e. disable the MPATH_UNCHANGED logic and set DM_ACTIVATION=1.
|
||||
+# i.e. disable the MPATH_UNCHANGED logic.
|
||||
ENV{DM_COLDPLUG_SUSPENDED}=="1", ENV{.DM_SUSPENDED}!="1", \
|
||||
- ENV{DM_ACTIVATION}="1", ENV{MPATH_UNCHANGED}="0", \
|
||||
+ ENV{MPATH_UNCHANGED}="0", \
|
||||
PROGRAM="@SYSDIR_BIN@/logger -t 11-dm-mpath.rules -p daemon.notice \"Forcing activation of previously suspended device\"", \
|
||||
GOTO="check_mpath_ready"
|
||||
|
||||
# DM_SUBSYSTEM_UDEV_FLAG0 is the "RELOAD" flag for multipath subsystem.
|
||||
-# Drop the DM_ACTIVATION flag here as mpath reloads tables if any of its
|
||||
+# Set the MPATH_UNCHANGED flag here as mpath reloads tables if any of its
|
||||
# paths are lost/recovered. For any stack above the mpath device, this is not
|
||||
# something that should be reacted upon since it would be useless extra work.
|
||||
# It's exactly mpath's job to provide *seamless* device access to any of the
|
||||
# paths that are available underneath.
|
||||
ENV{DM_SUBSYSTEM_UDEV_FLAG0}=="1", \
|
||||
- ENV{DM_ACTIVATION}="0", ENV{MPATH_UNCHANGED}="1"
|
||||
+ ENV{MPATH_UNCHANGED}="1"
|
||||
|
||||
-# For path failed or reinstated events, unset DM_ACTIVATION.
|
||||
+# For path failed or reinstated events, set MPATH_UNCHANGED.
|
||||
# This is similar to the DM_SUBSYSTEM_UDEV_FLAG0 case above.
|
||||
ENV{DM_ACTION}=="PATH_FAILED|PATH_REINSTATED", \
|
||||
- ENV{DM_ACTIVATION}="0", ENV{MPATH_UNCHANGED}="1"
|
||||
+ ENV{MPATH_UNCHANGED}="1"
|
||||
|
||||
LABEL="check_mpath_ready"
|
||||
|
||||
@@ -112,11 +112,10 @@ GOTO="scan_import"
|
||||
|
||||
LABEL="mpath_is_ready"
|
||||
|
||||
-# If the device comes back online, set DM_ACTIVATION so that
|
||||
+# If the device comes back online, clear MPATH_UNCHANGED so that
|
||||
# upper layers will do a rescan. Don't do this if .MPATH_DEVICE_READY_OLD
|
||||
# is just empty (see comment above the DM_COOKIE test above).
|
||||
-ENV{.MPATH_DEVICE_READY_OLD}=="0", \
|
||||
- ENV{DM_ACTIVATION}="1", ENV{MPATH_UNCHANGED}="0"
|
||||
+ENV{.MPATH_DEVICE_READY_OLD}=="0", ENV{MPATH_UNCHANGED}="0"
|
||||
|
||||
# The code to check multipath state ends here. We need to set
|
||||
# properties and symlinks regardless whether the map is usable or
|
||||
@@ -146,6 +145,10 @@ IMPORT{db}="ID_PART_GPT_AUTO_ROOT"
|
||||
|
||||
LABEL="import_end"
|
||||
|
||||
+# If MPATH_UNCHANGED is set, adapt DM_ACTIVATION.
|
||||
+ENV{MPATH_UNCHANGED}=="0", ENV{DM_ACTIVATION}="1"
|
||||
+ENV{MPATH_UNCHANGED}=="1", ENV{DM_ACTIVATION}="0"
|
||||
+
|
||||
# Reset previous DM_COLDPLUG_SUSPENDED if activation happens now
|
||||
ENV{.DM_SUSPENDED}!="1", ENV{DM_ACTIVATION}=="1", ENV{DM_COLDPLUG_SUSPENDED}=""
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From 374755791536be4870ab2e93ae36549cbaaeb800 Mon Sep 17 00:00:00 2001
|
||||
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
Date: Fri, 25 Mar 2022 18:12:06 -0500
|
||||
Subject: [PATCH] RH: add scsi device handlers to modules-load.d
|
||||
|
|
@ -11,7 +11,7 @@ Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/Makefile.inc b/Makefile.inc
|
||||
index a5024bb7..834b63b9 100644
|
||||
index 03aee175..936a622f 100644
|
||||
--- a/Makefile.inc
|
||||
+++ b/Makefile.inc
|
||||
@@ -16,7 +16,7 @@ READLINE :=
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Wilck <mwilck@suse.com>
|
||||
Date: Sun, 3 Nov 2024 23:04:08 +0100
|
||||
Subject: [PATCH] 11-dm-mpath-rules.in: skip one .DM_NOSCAN check
|
||||
|
||||
We set .DM_NOSCAN above where we set DM_UDEV_DISABLE_OTHER_RULES_FLAG, too. If
|
||||
the latter isn't set, .DM_NOSCAN can't be set. Skip the redundant test.
|
||||
|
||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
||||
Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
---
|
||||
multipath/11-dm-mpath.rules.in | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/multipath/11-dm-mpath.rules.in b/multipath/11-dm-mpath.rules.in
|
||||
index a2655cb2..79227bec 100644
|
||||
--- a/multipath/11-dm-mpath.rules.in
|
||||
+++ b/multipath/11-dm-mpath.rules.in
|
||||
@@ -132,7 +132,7 @@ ENV{DM_UDEV_PRIMARY_SOURCE_FLAG}!="1", GOTO="import_end"
|
||||
ENV{DM_UDEV_RULES_VSN}!="1|2", GOTO="import_end"
|
||||
|
||||
# Don't import the properties from db if we will run blkid later.
|
||||
-ENV{.DM_NOSCAN}!="1", ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}!="1", GOTO="import_end"
|
||||
+ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}!="1", GOTO="import_end"
|
||||
|
||||
IMPORT{db}="ID_FS_TYPE"
|
||||
IMPORT{db}="ID_FS_USAGE"
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From cc15379130e8aa068e97c64afd46be212b456d4f Mon Sep 17 00:00:00 2001
|
||||
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
Date: Tue, 15 Nov 2022 18:03:33 -0600
|
||||
Subject: [PATCH] RH: compile with libreadline support
|
||||
|
|
@ -12,7 +12,7 @@ Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/Makefile.inc b/Makefile.inc
|
||||
index 834b63b9..c482a181 100644
|
||||
index 936a622f..f475f70f 100644
|
||||
--- a/Makefile.inc
|
||||
+++ b/Makefile.inc
|
||||
@@ -12,7 +12,7 @@
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Wilck <mwilck@suse.com>
|
||||
Date: Sun, 3 Nov 2024 23:07:23 +0100
|
||||
Subject: [PATCH] 11-dm-mpath.rules.in: set .DM_NOSCAN if MPATH_UNCHANGED is
|
||||
set
|
||||
|
||||
When multipath reloads a device or fails or restores a path, the udev
|
||||
rules disable LVM scanning, but since .DM_NOSCAN isn't set, blkid is
|
||||
still run on the device. When multipath devices that are set to
|
||||
queue_if_no_path lose all their paths at close to the same time, udev
|
||||
workers can hang trying to run blkid. The blkid results shouldn't
|
||||
change when multipathd is adding, removing, failing or reinstating
|
||||
paths, aside from avoiding hanging udev processes, we're skipping
|
||||
unnecessary work.
|
||||
|
||||
Hence, set .DM_NOSCAN if MPATH_UNCHANGED is set, to avoid blkid from
|
||||
being called in 13-dm.rules.
|
||||
|
||||
Suggested-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
||||
Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
---
|
||||
multipath/11-dm-mpath.rules.in | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/multipath/11-dm-mpath.rules.in b/multipath/11-dm-mpath.rules.in
|
||||
index 79227bec..a816edbf 100644
|
||||
--- a/multipath/11-dm-mpath.rules.in
|
||||
+++ b/multipath/11-dm-mpath.rules.in
|
||||
@@ -145,9 +145,11 @@ IMPORT{db}="ID_PART_GPT_AUTO_ROOT"
|
||||
|
||||
LABEL="import_end"
|
||||
|
||||
-# If MPATH_UNCHANGED is set, adapt DM_ACTIVATION.
|
||||
+# If MPATH_UNCHANGED is set, adapt DM_ACTIVATION and DM_NOSCAN.
|
||||
+# .DM_NOSCAN controls whether blkid will be run in 13-dm-disk.rules;
|
||||
+# we don't want to do that if MPATH_UNCHANGED is 1.
|
||||
ENV{MPATH_UNCHANGED}=="0", ENV{DM_ACTIVATION}="1"
|
||||
-ENV{MPATH_UNCHANGED}=="1", ENV{DM_ACTIVATION}="0"
|
||||
+ENV{MPATH_UNCHANGED}=="1", ENV{DM_ACTIVATION}="0", ENV{.DM_NOSCAN}="1"
|
||||
|
||||
# Reset previous DM_COLDPLUG_SUSPENDED if activation happens now
|
||||
ENV{.DM_SUSPENDED}!="1", ENV{DM_ACTIVATION}=="1", ENV{DM_COLDPLUG_SUSPENDED}=""
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From 2ef5bd86052ba0b22f4d3a16e69cdf268d90a53a Mon Sep 17 00:00:00 2001
|
||||
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
Date: Fri, 7 Jul 2023 15:25:59 -0500
|
||||
Subject: [PATCH] RH: Add mpathcleanup
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Wilck <mwilck@suse.com>
|
||||
Date: Thu, 7 Nov 2024 22:07:03 +0100
|
||||
Subject: [PATCH] libmultipath: don't set dev_loss_tmo to 0 for
|
||||
NO_PATH_RETRY_FAIL
|
||||
|
||||
If pp->dev_loss is DEV_LOSS_TMO_UNSET and min_dev_loss is 0 (which is
|
||||
the case if no_path_retry is NO_PATH_RETRY_FAIL or NO_PATH_RETRY_UNDEF),
|
||||
we will set pp->dev_loss to 0, which is wrong. Fix it.
|
||||
|
||||
Fixes: 058b5f5 ("libmultipath: fix dev_loss_tmo even if not set in configuration")
|
||||
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 | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c
|
||||
index e94705bf..5043330c 100644
|
||||
--- a/libmultipath/discovery.c
|
||||
+++ b/libmultipath/discovery.c
|
||||
@@ -942,7 +942,7 @@ sysfs_set_scsi_tmo (struct config *conf, struct multipath *mpp)
|
||||
continue;
|
||||
}
|
||||
|
||||
- if (pp->dev_loss == DEV_LOSS_TMO_UNSET)
|
||||
+ if (pp->dev_loss == DEV_LOSS_TMO_UNSET && min_dev_loss != 0)
|
||||
pp->dev_loss = min_dev_loss;
|
||||
else if (pp->dev_loss < min_dev_loss) {
|
||||
pp->dev_loss = min_dev_loss;
|
||||
|
|
@ -1,35 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
Date: Mon, 14 Oct 2024 23:28:30 -0400
|
||||
Subject: [PATCH] multipathd: fix deferred_failback_tick for reload removes
|
||||
|
||||
If reload_and_sync_map() removes the multipath device,
|
||||
deferred_failback_tick() needs to decrement the counter so that it
|
||||
doesn't skip the following device.
|
||||
|
||||
Reviewed-by: Martin Wilck <mwilck@suse.com>
|
||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
---
|
||||
multipathd/main.c | 9 ++++++---
|
||||
1 file changed, 6 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/multipathd/main.c b/multipathd/main.c
|
||||
index 1b7fd04f..e4ef9a1d 100644
|
||||
--- a/multipathd/main.c
|
||||
+++ b/multipathd/main.c
|
||||
@@ -2080,9 +2080,12 @@ deferred_failback_tick (struct vectors *vecs)
|
||||
|
||||
if (!mpp->failback_tick &&
|
||||
need_switch_pathgroup(mpp, &need_reload)) {
|
||||
- if (need_reload)
|
||||
- reload_and_sync_map(mpp, vecs);
|
||||
- else
|
||||
+ if (need_reload) {
|
||||
+ if (reload_and_sync_map(mpp, vecs) == 2) {
|
||||
+ /* multipath device removed */
|
||||
+ i--;
|
||||
+ }
|
||||
+ } else
|
||||
switch_pathgroup(mpp);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Wilck <mwilck@suse.com>
|
||||
Date: Wed, 13 Nov 2024 16:19:49 +0100
|
||||
Subject: [PATCH] multipathd: fix an unsigned int ovwerflow
|
||||
|
||||
Reported by coverity: "i--" may cause an underflow, which will again
|
||||
cause an overflow when the loop continues. Use a signed int for
|
||||
loops like this to make coverity happy.
|
||||
|
||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
---
|
||||
multipathd/main.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/multipathd/main.c b/multipathd/main.c
|
||||
index e4ef9a1d..3fb623fd 100644
|
||||
--- a/multipathd/main.c
|
||||
+++ b/multipathd/main.c
|
||||
@@ -2068,7 +2068,7 @@ static void
|
||||
deferred_failback_tick (struct vectors *vecs)
|
||||
{
|
||||
struct multipath * mpp;
|
||||
- unsigned int i;
|
||||
+ int i;
|
||||
bool need_reload;
|
||||
|
||||
vector_foreach_slot (vecs->mpvec, mpp, i) {
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Wilck <mwilck@suse.com>
|
||||
Date: Wed, 6 Nov 2024 22:17:16 +0100
|
||||
Subject: [PATCH] libmpathutil: avoid -Wcast-function-type-mismatch error with
|
||||
clang 19
|
||||
|
||||
Avoid the following error with clang 19:
|
||||
|
||||
msort.c:268:27: error: cast from '__compar_fn_t' (aka 'int (*)(const void *, const void *)') to '__compar_d_fn_t' (aka 'int (*)(const void *, const void *, void *)') converts to incompatible function type [-Werror,-Wcast-function-type-mismatch]
|
||||
268 | return msort_r (b, n, s, (__compar_d_fn_t)cmp, NULL);
|
||||
| ^~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
---
|
||||
libmpathutil/msort.c | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libmpathutil/msort.c b/libmpathutil/msort.c
|
||||
index 50f799d9..9df7b267 100644
|
||||
--- a/libmpathutil/msort.c
|
||||
+++ b/libmpathutil/msort.c
|
||||
@@ -259,9 +259,12 @@ msort_r (void *b, size_t n, size_t s, __compar_d_fn_t cmp, void *arg)
|
||||
* If this is safe for them, it should be for us, too.
|
||||
*/
|
||||
#pragma GCC diagnostic push
|
||||
-#if __GNUC__ >= 8
|
||||
+#if __GNUC__ >= 8 || __clang_major__ >= 19
|
||||
#pragma GCC diagnostic ignored "-Wcast-function-type"
|
||||
#endif
|
||||
+#if __clang_major__ >= 19
|
||||
+#pragma GCC diagnostic ignored "-Wcast-function-type-mismatch"
|
||||
+#endif
|
||||
void
|
||||
msort (void *b, size_t n, size_t s, __compar_fn_t cmp)
|
||||
{
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Wilck <mwilck@suse.com>
|
||||
Date: Thu, 14 Nov 2024 17:59:14 +0100
|
||||
Subject: [PATCH] Update NEWS.md for 0.10.1
|
||||
|
||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
---
|
||||
NEWS.md | 23 +++++++++++++++++++++++
|
||||
1 file changed, 23 insertions(+)
|
||||
|
||||
diff --git a/NEWS.md b/NEWS.md
|
||||
index 69acda47..b740efb1 100644
|
||||
--- a/NEWS.md
|
||||
+++ b/NEWS.md
|
||||
@@ -1,5 +1,28 @@
|
||||
# multipath-tools Release Notes
|
||||
|
||||
+## multipath-tools 0.10.1, 2024/11
|
||||
+
|
||||
+This is the first bug fix release on the `stable-0.10.y` branch. It contains
|
||||
+bug fixes from 0.11.0, and some CI-related fixes.
|
||||
+
|
||||
+### Bug fixes
|
||||
+
|
||||
+* Fixed the problem that multipathd wouldn't start on systems with certain types
|
||||
+ of device mapper devices, in particular devices with multiple DM targets.
|
||||
+ The problem was introduced in 0.10.0.
|
||||
+ Fixes [#102](https://github.com/opensvc/multipath-tools/issues/102).
|
||||
+* Fixed a corner case in the udev rules which could cause a device not to be
|
||||
+ activated during boot if a cold plug uevent is processed for a previously
|
||||
+ not configured multipath map while this map was suspended. This problem existed
|
||||
+ since 0.9.8.
|
||||
+* Fixed the problem that devices with `no_path_retry fail` and no setting
|
||||
+ for `dev_loss_tmo` might get the `dev_loss_tmo` set to 0, causing the
|
||||
+ device to be deleted immediately in the event of a transport disruption.
|
||||
+ This bug was introduced in 0.9.6.
|
||||
+* Fixed the problem that, if there were multiple maps with deferred failback
|
||||
+ (`failback` value > 0 in `multipath.conf`), some maps might fail back later
|
||||
+ than configured. The problem existed since 0.9.6.
|
||||
+
|
||||
## multipath-tools 0.10.0, 2024/08
|
||||
|
||||
### User-Visible Changes
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Wilck <mwilck@suse.com>
|
||||
Date: Thu, 14 Nov 2024 15:20:24 +0100
|
||||
Subject: [PATCH] libmultipath: don't print error message if WATCHDOG_USEC is 0
|
||||
|
||||
WATCHDOG_USEC may be set to 0, which means that the watchdog
|
||||
is disabled in systemd.
|
||||
|
||||
Fixes: 9366cfb ("multipathd: Implement systemd watchdog integration")
|
||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
||||
Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
---
|
||||
libmultipath/config.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/libmultipath/config.c b/libmultipath/config.c
|
||||
index 0e3a5cc1..226ddecb 100644
|
||||
--- a/libmultipath/config.c
|
||||
+++ b/libmultipath/config.c
|
||||
@@ -865,6 +865,9 @@ static void set_max_checkint_from_watchdog(struct config *conf)
|
||||
unsigned long checkint;
|
||||
|
||||
if (envp && sscanf(envp, "%lu", &checkint) == 1) {
|
||||
+ if (checkint == 0)
|
||||
+ /* watchdog disabled */
|
||||
+ return;
|
||||
/* Value is in microseconds */
|
||||
checkint /= 1000000;
|
||||
if (checkint < 1 || checkint > UINT_MAX) {
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Wilck <mwilck@suse.com>
|
||||
Date: Mon, 25 Nov 2024 18:01:32 +0100
|
||||
Subject: [PATCH] libmultipath: reduce log level of "map X has multiple
|
||||
targets"
|
||||
|
||||
On systems with LVM volumes, "multipath -ll" will spit out lots of messages
|
||||
like
|
||||
|
||||
libmp_mapinfo: map vg-lv0 has multiple targets
|
||||
|
||||
which is irritating. Reduce the log level of these messages to 3, as they
|
||||
are harmless most of the time.
|
||||
|
||||
This is a backport of e8949c2 ("libmultipath: reduce log level of
|
||||
libmp_mapinfo() messages") from the master branch. We can't apply exactly
|
||||
the same fix because the stable branch is missing 8c772d3 ("libmultipath:
|
||||
check DM UUID earlier in libmp_mapinfo__").
|
||||
|
||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
---
|
||||
libmultipath/devmapper.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c
|
||||
index 52bfe9ce..fe5637b3 100644
|
||||
--- a/libmultipath/devmapper.c
|
||||
+++ b/libmultipath/devmapper.c
|
||||
@@ -718,7 +718,7 @@ static int libmp_mapinfo__(int flags, mapid_t id, mapinfo_t info, const char *ma
|
||||
if (info.target || info.status || info.size || flags & MAPINFO_TGT_TYPE__) {
|
||||
if (dm_get_next_target(dmt, NULL, &start, &length,
|
||||
&target_type, ¶ms) != NULL) {
|
||||
- condlog(2, "%s: map %s has multiple targets", fname__, map_id);
|
||||
+ condlog(3, "%s: map %s has multiple targets", fname__, map_id);
|
||||
return DMP_NOT_FOUND;
|
||||
}
|
||||
if (!params) {
|
||||
|
|
@ -1,54 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
Date: Wed, 8 Jan 2025 19:06:53 -0500
|
||||
Subject: [PATCH] libmultipath/foreign: fix memory leak in nvme foreign handler
|
||||
|
||||
_find_controllers() needs to free the udev device if it doesn't get
|
||||
added to a path. Otherwise it can leak memory whenever check_foreign()
|
||||
is called, causing multipathd's memory usage to continually grow.
|
||||
|
||||
Fixes: 7b47762 ("libmultipath: nvme: fix path detection for kernel 4.16")
|
||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
Reviewed-by: Martin Wilck <mwilck@suse.com>
|
||||
(cherry picked from commit 5a3d334e416a4a35ee88d7b8f1433ff7f57923ad)
|
||||
---
|
||||
libmultipath/foreign/nvme.c | 9 +++++----
|
||||
1 file changed, 5 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/libmultipath/foreign/nvme.c b/libmultipath/foreign/nvme.c
|
||||
index 0b7f4eab..cde660ce 100644
|
||||
--- a/libmultipath/foreign/nvme.c
|
||||
+++ b/libmultipath/foreign/nvme.c
|
||||
@@ -675,7 +675,8 @@ static void _find_controllers(struct context *ctx, struct nvme_map *map)
|
||||
pthread_cleanup_push_cast(free_scandir_result, &sr);
|
||||
for (i = 0; i < r; i++) {
|
||||
char *fn = di[i]->d_name;
|
||||
- struct udev_device *ctrl, *udev;
|
||||
+ struct udev_device *ctrl;
|
||||
+ struct udev_device *udev __attribute__((cleanup(cleanup_udev_device))) = NULL;
|
||||
|
||||
if (safe_snprintf(pathbuf + n, sizeof(pathbuf) - n, "/%s", fn))
|
||||
continue;
|
||||
@@ -719,11 +720,11 @@ static void _find_controllers(struct context *ctx, struct nvme_map *map)
|
||||
continue;
|
||||
|
||||
path->gen.ops = &nvme_path_ops;
|
||||
- path->udev = udev;
|
||||
+ path->udev = steal_ptr(udev);
|
||||
path->seen = true;
|
||||
path->map = map;
|
||||
path->ctl = udev_device_get_parent_with_subsystem_devtype
|
||||
- (udev, "nvme", NULL);
|
||||
+ (path->udev, "nvme", NULL);
|
||||
if (path->ctl == NULL) {
|
||||
condlog(1, "%s: %s: failed to get controller for %s",
|
||||
__func__, THIS, fn);
|
||||
@@ -744,7 +745,7 @@ static void _find_controllers(struct context *ctx, struct nvme_map *map)
|
||||
}
|
||||
vector_set_slot(&map->pgvec, &path->pg);
|
||||
condlog(3, "%s: %s: new path %s added to %s",
|
||||
- __func__, THIS, udev_device_get_sysname(udev),
|
||||
+ __func__, THIS, udev_device_get_sysname(path->udev),
|
||||
udev_device_get_sysname(map->udev));
|
||||
}
|
||||
pthread_cleanup_pop(1);
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: chenrenhui <chenrenhui1@huawei.com>
|
||||
Date: Fri, 10 Jan 2025 14:38:16 +0800
|
||||
Subject: [PATCH] libmultipath: add condition for enqueueing path to io error
|
||||
check
|
||||
|
||||
In function io_err_stat_handle_pathfail(), path->io_err_dis_reinstate_time
|
||||
is set to 0 to enqueue path to io error check as soon as possible. But
|
||||
multipathd can not do it within marginal_path_err_recheck_gap_time seconds
|
||||
after power-on, because curr_time is less than
|
||||
marginal_path_err_recheck_gap_time.
|
||||
|
||||
To handle the early marginal path, we can enqueue path when
|
||||
io_err_dis_reinstate_time is 0.
|
||||
|
||||
Signed-off-by: chenrenhui <chenrenhui1@huawei.com>
|
||||
Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
Reviewed-by: Martin Wilck <mwilck@suse.com>
|
||||
|
||||
>
|
||||
|
||||
(cherry picked from commit a1e3cf2d42cc4bab10753e466c8adb7efa83c99e)
|
||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
---
|
||||
libmultipath/io_err_stat.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libmultipath/io_err_stat.c b/libmultipath/io_err_stat.c
|
||||
index 4996c0b0..879c310a 100644
|
||||
--- a/libmultipath/io_err_stat.c
|
||||
+++ b/libmultipath/io_err_stat.c
|
||||
@@ -367,7 +367,8 @@ int need_io_err_check(struct path *pp)
|
||||
return 1;
|
||||
get_monotonic_time(&curr_time);
|
||||
if ((curr_time.tv_sec - pp->io_err_dis_reinstate_time) >
|
||||
- pp->mpp->marginal_path_err_recheck_gap_time) {
|
||||
+ pp->mpp->marginal_path_err_recheck_gap_time ||
|
||||
+ pp->io_err_dis_reinstate_time == 0) {
|
||||
io_err_stat_log(4, "%s: reschedule checking after %d seconds",
|
||||
pp->dev,
|
||||
pp->mpp->marginal_path_err_recheck_gap_time);
|
||||
|
|
@ -1,63 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Wilck <mwilck@suse.com>
|
||||
Date: Fri, 17 Jan 2025 22:38:26 +0100
|
||||
Subject: [PATCH] Additional NEWS.md updates for 0.10.1
|
||||
|
||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
---
|
||||
.github/actions/spelling/expect.txt | 4 ++--
|
||||
NEWS.md | 8 ++++++++
|
||||
2 files changed, 10 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/.github/actions/spelling/expect.txt b/.github/actions/spelling/expect.txt
|
||||
index 934f582e..000d5ebb 100644
|
||||
--- a/.github/actions/spelling/expect.txt
|
||||
+++ b/.github/actions/spelling/expect.txt
|
||||
@@ -184,7 +184,6 @@ sas
|
||||
sbp
|
||||
scsi
|
||||
sda
|
||||
-sdc
|
||||
setmarginal
|
||||
setprkey
|
||||
setprstatus
|
||||
@@ -205,11 +204,11 @@ suse
|
||||
svg
|
||||
switchgroup
|
||||
sys
|
||||
+SYSDIR
|
||||
sysfs
|
||||
sysinit
|
||||
tcp
|
||||
terabytes
|
||||
-SYSDIR
|
||||
TESTDEPS
|
||||
testname
|
||||
tgill
|
||||
@@ -231,6 +230,7 @@ unsetprkey
|
||||
unsetprstatus
|
||||
unspec
|
||||
usb
|
||||
+USEC
|
||||
userdata
|
||||
userspace
|
||||
usr
|
||||
diff --git a/NEWS.md b/NEWS.md
|
||||
index b740efb1..3c51553e 100644
|
||||
--- a/NEWS.md
|
||||
+++ b/NEWS.md
|
||||
@@ -22,6 +22,14 @@ bug fixes from 0.11.0, and some CI-related fixes.
|
||||
* Fixed the problem that, if there were multiple maps with deferred failback
|
||||
(`failback` value > 0 in `multipath.conf`), some maps might fail back later
|
||||
than configured. The problem existed since 0.9.6.
|
||||
+* Removed a warning message that multipathd would print if systemd's
|
||||
+ `WATCHDOG_USEC` environment variable had the value "0", which means that the
|
||||
+ watchdog is simply disabled. This (minor) problem existed since 0.4.9.
|
||||
+* Fixed a memory leak in the nvme foreign library. The bug existed since
|
||||
+ 0.7.8.
|
||||
+* Fixed a problem in the marginal path detection algorithm that could cause
|
||||
+ the io error check for a recently failed path to be delayed. This bug
|
||||
+ existed since 0.7.4.
|
||||
|
||||
## multipath-tools 0.10.0, 2024/08
|
||||
|
||||
|
|
@ -1,138 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Wilck <mwilck@suse.com>
|
||||
Date: Mon, 25 Nov 2024 13:11:07 +0100
|
||||
Subject: [PATCH] libmultipath: fix handling of pp->pgindex
|
||||
|
||||
pp->pgindex is set in disassemble_map() when a map is parsed.
|
||||
There are various possiblities for this index to become invalid.
|
||||
pp->pgindex is only used in enable_group() and followover_should_fallback(),
|
||||
and both callers take no action if it is 0, which is the right
|
||||
thing to do if we don't know the path's pathgroup.
|
||||
|
||||
Make sure pp->pgindex is reset to 0 in various places:
|
||||
- when it's orphaned,
|
||||
- before (re)grouping paths,
|
||||
- when we detect a bad mpp assignment in update_pathvec_from_dm().
|
||||
- when a pathgroup is deleted in update_pathvec_from_dm(). In this
|
||||
case, pgindex needs to be invalidated for all paths in all pathgroups
|
||||
after the one that was deleted.
|
||||
|
||||
The hunk in group_paths is mostly redundant with the hunk in free_pgvec(), but
|
||||
because we're looping over pg->paths in the former and over pg->pgp in
|
||||
the latter, I think it's better too play safe.
|
||||
|
||||
Fixes: 99db1bd ("[multipathd] re-enable disabled PG when at least one path is up")
|
||||
Fixes: https://github.com/opensvc/multipath-tools/issues/105
|
||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
||||
Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
(cherry picked from commit cd912cffa2797a18c47426c816afa8eb2eae5b22)
|
||||
(cherry picked from commit 714c20bebba6911255a527d937e7a62764ffe338)
|
||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
---
|
||||
libmultipath/pgpolicies.c | 6 ++++++
|
||||
libmultipath/structs.c | 12 +++++++++++-
|
||||
libmultipath/structs_vec.c | 15 +++++++++++++++
|
||||
3 files changed, 32 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libmultipath/pgpolicies.c b/libmultipath/pgpolicies.c
|
||||
index edc3c611..23ef2bdc 100644
|
||||
--- a/libmultipath/pgpolicies.c
|
||||
+++ b/libmultipath/pgpolicies.c
|
||||
@@ -127,6 +127,8 @@ fail:
|
||||
int group_paths(struct multipath *mp, int marginal_pathgroups)
|
||||
{
|
||||
vector normal, marginal;
|
||||
+ struct path *pp;
|
||||
+ int i;
|
||||
|
||||
if (!mp->pg)
|
||||
mp->pg = vector_alloc();
|
||||
@@ -138,6 +140,10 @@ int group_paths(struct multipath *mp, int marginal_pathgroups)
|
||||
if (!mp->pgpolicyfn)
|
||||
goto fail;
|
||||
|
||||
+ /* Reset pgindex, we're going to invalidate it */
|
||||
+ vector_foreach_slot(mp->paths, pp, i)
|
||||
+ pp->pgindex = 0;
|
||||
+
|
||||
if (!marginal_pathgroups ||
|
||||
split_marginal_paths(mp->paths, &normal, &marginal) != 0) {
|
||||
if (mp->pgpolicyfn(mp, mp->paths) != 0)
|
||||
diff --git a/libmultipath/structs.c b/libmultipath/structs.c
|
||||
index 61c8f32c..48517252 100644
|
||||
--- a/libmultipath/structs.c
|
||||
+++ b/libmultipath/structs.c
|
||||
@@ -239,8 +239,18 @@ free_pgvec (vector pgvec, enum free_path_mode free_paths)
|
||||
if (!pgvec)
|
||||
return;
|
||||
|
||||
- vector_foreach_slot(pgvec, pgp, i)
|
||||
+ vector_foreach_slot(pgvec, pgp, i) {
|
||||
+
|
||||
+ /* paths are going to be re-grouped, reset pgindex */
|
||||
+ if (free_paths != FREE_PATHS) {
|
||||
+ struct path *pp;
|
||||
+ int j;
|
||||
+
|
||||
+ vector_foreach_slot(pgp->paths, pp, j)
|
||||
+ pp->pgindex = 0;
|
||||
+ }
|
||||
free_pathgroup(pgp, free_paths);
|
||||
+ }
|
||||
|
||||
vector_free(pgvec);
|
||||
}
|
||||
diff --git a/libmultipath/structs_vec.c b/libmultipath/structs_vec.c
|
||||
index 5df495b3..9dc5a5ca 100644
|
||||
--- a/libmultipath/structs_vec.c
|
||||
+++ b/libmultipath/structs_vec.c
|
||||
@@ -108,6 +108,7 @@ static bool update_pathvec_from_dm(vector pathvec, struct multipath *mpp,
|
||||
struct config *conf;
|
||||
bool mpp_has_wwid;
|
||||
bool must_reload = false;
|
||||
+ bool pg_deleted = false;
|
||||
|
||||
if (!mpp->pg)
|
||||
return false;
|
||||
@@ -125,6 +126,10 @@ static bool update_pathvec_from_dm(vector pathvec, struct multipath *mpp,
|
||||
|
||||
vector_foreach_slot(pgp->paths, pp, j) {
|
||||
|
||||
+ /* A pathgroup has been deleted before. Invalidate pgindex */
|
||||
+ if (pg_deleted)
|
||||
+ pp->pgindex = 0;
|
||||
+
|
||||
if (pp->mpp && pp->mpp != mpp) {
|
||||
condlog(0, "BUG: %s: found path %s which is already in %s",
|
||||
mpp->alias, pp->dev, pp->mpp->alias);
|
||||
@@ -139,6 +144,13 @@ static bool update_pathvec_from_dm(vector pathvec, struct multipath *mpp,
|
||||
must_reload = true;
|
||||
dm_fail_path(mpp->alias, pp->dev_t);
|
||||
vector_del_slot(pgp->paths, j--);
|
||||
+ /*
|
||||
+ * pp->pgindex has been set in disassemble_map(),
|
||||
+ * which has probably been called just before for
|
||||
+ * mpp. So he pgindex relates to mpp and may be
|
||||
+ * wrong for pp->mpp. Invalidate it.
|
||||
+ */
|
||||
+ pp->pgindex = 0;
|
||||
continue;
|
||||
}
|
||||
pp->mpp = mpp;
|
||||
@@ -237,6 +249,8 @@ static bool update_pathvec_from_dm(vector pathvec, struct multipath *mpp,
|
||||
vector_del_slot(mpp->pg, i--);
|
||||
free_pathgroup(pgp, KEEP_PATHS);
|
||||
must_reload = true;
|
||||
+ /* Invalidate pgindex for all other pathgroups */
|
||||
+ pg_deleted = true;
|
||||
}
|
||||
mpp->need_reload = mpp->need_reload || must_reload;
|
||||
return must_reload;
|
||||
@@ -354,6 +368,7 @@ void orphan_path(struct path *pp, const char *reason)
|
||||
{
|
||||
condlog(3, "%s: orphan path, %s", pp->dev, reason);
|
||||
pp->mpp = NULL;
|
||||
+ pp->pgindex = 0;
|
||||
uninitialize_path(pp);
|
||||
}
|
||||
|
||||
|
|
@ -1,70 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Wilck <mwilck@suse.com>
|
||||
Date: Mon, 25 Nov 2024 15:18:15 +0100
|
||||
Subject: [PATCH] libmultipath: make pgcmp detect if map is missing a path
|
||||
group
|
||||
|
||||
The previous algorithm didn't detect the case case where cpgp
|
||||
contained a path that was not contained in pgp. Fix this.
|
||||
|
||||
Cherry-picked from d4b35f61cb75c6e9b289e56c98457fc04ce4835e
|
||||
Fixes: 90773ba ("libmultipath: resolve hash collisions in pgcmp()")
|
||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
---
|
||||
libmultipath/configure.c | 18 ++++++++++++++++++
|
||||
1 file changed, 18 insertions(+)
|
||||
|
||||
diff --git a/libmultipath/configure.c b/libmultipath/configure.c
|
||||
index a7257981..e86c1fd5 100644
|
||||
--- a/libmultipath/configure.c
|
||||
+++ b/libmultipath/configure.c
|
||||
@@ -426,6 +426,11 @@ compute_pgid(struct pathgroup * pgp)
|
||||
pgp->id ^= (long)pp;
|
||||
}
|
||||
|
||||
+static void cleanup_bitfield(struct bitfield **p)
|
||||
+{
|
||||
+ free(*p);
|
||||
+}
|
||||
+
|
||||
static int
|
||||
pgcmp (struct multipath * mpp, struct multipath * cmpp)
|
||||
{
|
||||
@@ -433,16 +438,25 @@ pgcmp (struct multipath * mpp, struct multipath * cmpp)
|
||||
struct pathgroup * pgp;
|
||||
struct pathgroup * cpgp;
|
||||
int r = 0;
|
||||
+ struct bitfield *bf __attribute__((cleanup(cleanup_bitfield))) = NULL;
|
||||
|
||||
if (!mpp)
|
||||
return 0;
|
||||
|
||||
+ if (VECTOR_SIZE(mpp->pg) != VECTOR_SIZE(cmpp->pg))
|
||||
+ return 1;
|
||||
+
|
||||
+ bf = alloc_bitfield(VECTOR_SIZE(cmpp->pg));
|
||||
+ if (!bf)
|
||||
+ return 1;
|
||||
+
|
||||
vector_foreach_slot (mpp->pg, pgp, i) {
|
||||
compute_pgid(pgp);
|
||||
|
||||
vector_foreach_slot (cmpp->pg, cpgp, j) {
|
||||
if (pgp->id == cpgp->id &&
|
||||
!pathcmp(pgp, cpgp)) {
|
||||
+ set_bit_in_bitfield(j, bf);
|
||||
r = 0;
|
||||
break;
|
||||
}
|
||||
@@ -451,6 +465,10 @@ pgcmp (struct multipath * mpp, struct multipath * cmpp)
|
||||
if (r)
|
||||
return r;
|
||||
}
|
||||
+ vector_foreach_slot (cmpp->pg, cpgp, j) {
|
||||
+ if (!is_bit_set_in_bitfield(j, bf))
|
||||
+ return 1;
|
||||
+ }
|
||||
return r;
|
||||
}
|
||||
|
||||
|
|
@ -1,94 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Wilck <mwilck@suse.com>
|
||||
Date: Tue, 26 Nov 2024 22:37:20 +0100
|
||||
Subject: [PATCH] libmultipath: trigger uevents upon map creation in domap()
|
||||
|
||||
If map creation succeeds, previously not multipathed devices are
|
||||
now multipathed. udev may not have noticed this yet, thus trigger
|
||||
path uevents to make it aware of the situation. Likewise, if
|
||||
creating a map fails, the paths in question were likely considered
|
||||
multipath members by udev, too. They will now be marked as failed,
|
||||
so trigger an event in this situation as well.
|
||||
|
||||
Fixes: https://github.com/opensvc/multipath-tools/issues/103
|
||||
Suggested-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
||||
Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
(cherry picked from commit 98b3a7bd9ed2a89f068fe40c253843cf78261905)
|
||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
---
|
||||
libmultipath/configure.c | 11 ++++-------
|
||||
libmultipath/devmapper.c | 9 +++------
|
||||
2 files changed, 7 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/libmultipath/configure.c b/libmultipath/configure.c
|
||||
index e86c1fd5..d9fac384 100644
|
||||
--- a/libmultipath/configure.c
|
||||
+++ b/libmultipath/configure.c
|
||||
@@ -581,8 +581,6 @@ trigger_paths_udev_change(struct multipath *mpp, bool is_mpath)
|
||||
vector_foreach_slot(pgp->paths, pp, j)
|
||||
trigger_path_udev_change(pp, is_mpath);
|
||||
}
|
||||
-
|
||||
- mpp->needs_paths_uevent = 0;
|
||||
}
|
||||
|
||||
static int sysfs_set_max_sectors_kb(struct multipath *mpp)
|
||||
@@ -954,10 +952,10 @@ int domap(struct multipath *mpp, char *params, int is_daemon)
|
||||
* succeeded
|
||||
*/
|
||||
mpp->force_udev_reload = 0;
|
||||
- if (mpp->action == ACT_CREATE &&
|
||||
- (remember_wwid(mpp->wwid) == 1 ||
|
||||
- mpp->needs_paths_uevent))
|
||||
+ if (mpp->action == ACT_CREATE) {
|
||||
+ remember_wwid(mpp->wwid);
|
||||
trigger_paths_udev_change(mpp, true);
|
||||
+ }
|
||||
if (!is_daemon) {
|
||||
/* multipath client mode */
|
||||
dm_switchgroup(mpp->alias, mpp->bestpg);
|
||||
@@ -982,8 +980,7 @@ int domap(struct multipath *mpp, char *params, int is_daemon)
|
||||
}
|
||||
dm_setgeometry(mpp);
|
||||
return DOMAP_OK;
|
||||
- } else if (r == DOMAP_FAIL && mpp->action == ACT_CREATE &&
|
||||
- mpp->needs_paths_uevent)
|
||||
+ } else if (r == DOMAP_FAIL && mpp->action == ACT_CREATE)
|
||||
trigger_paths_udev_change(mpp, false);
|
||||
|
||||
return DOMAP_FAIL;
|
||||
diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c
|
||||
index fe5637b3..a0070c56 100644
|
||||
--- a/libmultipath/devmapper.c
|
||||
+++ b/libmultipath/devmapper.c
|
||||
@@ -536,7 +536,7 @@ static uint16_t build_udev_flags(const struct multipath *mpp, int reload)
|
||||
MPATH_UDEV_RELOAD_FLAG : 0);
|
||||
}
|
||||
|
||||
-int dm_addmap_create (struct multipath *mpp, char * params)
|
||||
+int dm_addmap_create (struct multipath *mpp, char *params)
|
||||
{
|
||||
int ro;
|
||||
uint16_t udev_flags = build_udev_flags(mpp, 0);
|
||||
@@ -546,9 +546,7 @@ int dm_addmap_create (struct multipath *mpp, char * params)
|
||||
|
||||
if (dm_addmap(DM_DEVICE_CREATE, TGT_MPATH, mpp, params, ro,
|
||||
udev_flags)) {
|
||||
- if (unmark_failed_wwid(mpp->wwid) ==
|
||||
- WWID_FAILED_CHANGED)
|
||||
- mpp->needs_paths_uevent = 1;
|
||||
+ unmark_failed_wwid(mpp->wwid);
|
||||
return 1;
|
||||
}
|
||||
/*
|
||||
@@ -566,8 +564,7 @@ int dm_addmap_create (struct multipath *mpp, char * params)
|
||||
break;
|
||||
}
|
||||
}
|
||||
- if (mark_failed_wwid(mpp->wwid) == WWID_FAILED_CHANGED)
|
||||
- mpp->needs_paths_uevent = 1;
|
||||
+ mark_failed_wwid(mpp->wwid);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Wilck <mwilck@suse.com>
|
||||
Date: Wed, 27 Nov 2024 20:39:50 +0100
|
||||
Subject: [PATCH] multipathd: trigger uevents upon map removal in
|
||||
coalesce_maps()
|
||||
|
||||
... if a map has been flushed. In this case, we know that the
|
||||
the paths haven't been multipathed by coalesce_paths() because of the current
|
||||
configuration (failure to create the map can't be the reason if the map
|
||||
exists in coalesce_maps()). Make sure udev sees the paths which have
|
||||
been released from the map as non-multipath.
|
||||
|
||||
Note that this is the only case where maps are flushed where it is correct
|
||||
to trigger paths uevents. In other cases, e.g. after a "remove map" CLI
|
||||
command, the configuration is unchanged and if we triggered an uevent,
|
||||
the map would be re-created by multipathd when the uevent arrived.
|
||||
|
||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
||||
Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
(cherry picked from commit ad3ea472b587c0c20d2100331b5c66f8602f8414)
|
||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
---
|
||||
multipathd/main.c | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/multipathd/main.c b/multipathd/main.c
|
||||
index 3fb623fd..4b089c0e 100644
|
||||
--- a/multipathd/main.c
|
||||
+++ b/multipathd/main.c
|
||||
@@ -794,8 +794,10 @@ coalesce_maps(struct vectors *vecs, vector nmpv)
|
||||
vector_del_slot(ompv, i);
|
||||
i--;
|
||||
}
|
||||
- else
|
||||
+ else {
|
||||
condlog(2, "%s devmap removed", ompp->alias);
|
||||
+ trigger_paths_udev_change(ompp, false);
|
||||
+ }
|
||||
} else if (reassign_maps) {
|
||||
condlog(3, "%s: Reassign existing device-mapper"
|
||||
" devices", ompp->alias);
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
Date: Wed, 4 Dec 2024 22:56:36 -0500
|
||||
Subject: [PATCH] libmultipath: Don't skip set_path_max_sectors_kb()
|
||||
|
||||
If a multipath device already has need_reload set when a path is
|
||||
adopted, it won't call set_path_max_sectors_kb() because of
|
||||
short-circuit evaluation. This isn't what's intended.
|
||||
|
||||
Fixes: e5e20c7b ("libmultipath: set max_sectors_kb in adopt_paths()")
|
||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
Reviewed-by: Martin Wilck <mwilck@suse.com>
|
||||
(cherry picked from commit f5c0c4b25c5eaac87b78e6e0c8d52b0828c29893)
|
||||
---
|
||||
libmultipath/structs_vec.c | 3 +--
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
diff --git a/libmultipath/structs_vec.c b/libmultipath/structs_vec.c
|
||||
index 9dc5a5ca..683ab473 100644
|
||||
--- a/libmultipath/structs_vec.c
|
||||
+++ b/libmultipath/structs_vec.c
|
||||
@@ -349,8 +349,7 @@ int adopt_paths(vector pathvec, struct multipath *mpp,
|
||||
*/
|
||||
if (!current_mpp ||
|
||||
!mp_find_path_by_devt(current_mpp, pp->dev_t))
|
||||
- mpp->need_reload = mpp->need_reload ||
|
||||
- set_path_max_sectors_kb(pp, mpp->max_sectors_kb);
|
||||
+ mpp->need_reload = set_path_max_sectors_kb(pp, mpp->max_sectors_kb) || mpp->need_reload;
|
||||
}
|
||||
|
||||
pp->mpp = mpp;
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
Date: Wed, 22 Jan 2025 22:16:42 -0500
|
||||
Subject: [PATCH] libmultipath: stop static analyzer complaint in init_foreign
|
||||
|
||||
This change doesn't actually fix anything. The code was already safe.
|
||||
|
||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
Reviewed-by: Martin Wilck <mwilck@suse.com>
|
||||
(cherry picked from commit 85ec51e7930b4cadfbc12718afa91ce3a4adf4b5)
|
||||
---
|
||||
libmultipath/foreign.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libmultipath/foreign.c b/libmultipath/foreign.c
|
||||
index 28d1b115..af5b0ed3 100644
|
||||
--- a/libmultipath/foreign.c
|
||||
+++ b/libmultipath/foreign.c
|
||||
@@ -129,7 +129,7 @@ static void free_pre(void *arg)
|
||||
static int _init_foreign(const char *enable)
|
||||
{
|
||||
char pathbuf[PATH_MAX];
|
||||
- struct dirent **di;
|
||||
+ struct dirent **di = NULL;
|
||||
struct scandir_result sr;
|
||||
int r, i;
|
||||
regex_t *enable_re = NULL;
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
Date: Wed, 22 Jan 2025 22:16:43 -0500
|
||||
Subject: [PATCH] libmultipath: be lenient in allowing the alua-based
|
||||
pgpolicies
|
||||
|
||||
multipath wouldn't autodetect the GROUP_BY_PRIO path grouping policy or
|
||||
allow the GROUP_BY_TPG policy if there was a path that didn't have its
|
||||
prioritizer selected (for instance because multipathd was reconfigured
|
||||
while it was offline). To avoid this, make verify_alua_prio() assume an
|
||||
alua multipath device if all the paths with a prioritizer selected
|
||||
(there must be at least one) use an alua-based prioritizer.
|
||||
|
||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
Reviewed-by: Martin Wilck <mwilck@suse.com>
|
||||
(cherry picked from commit b47a577998eaff203018a00b57ba5e3674645848)
|
||||
---
|
||||
libmultipath/propsel.c | 6 +++++-
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libmultipath/propsel.c b/libmultipath/propsel.c
|
||||
index a3fce203..c09a0619 100644
|
||||
--- a/libmultipath/propsel.c
|
||||
+++ b/libmultipath/propsel.c
|
||||
@@ -255,14 +255,18 @@ verify_alua_prio(struct multipath *mp)
|
||||
{
|
||||
int i;
|
||||
struct path *pp;
|
||||
+ bool assume_alua = false;
|
||||
|
||||
vector_foreach_slot(mp->paths, pp, i) {
|
||||
const char *name = prio_name(&pp->prio);
|
||||
+ if (!prio_selected(&pp->prio))
|
||||
+ continue;
|
||||
if (strncmp(name, PRIO_ALUA, PRIO_NAME_LEN) &&
|
||||
strncmp(name, PRIO_SYSFS, PRIO_NAME_LEN))
|
||||
return false;
|
||||
+ assume_alua = true;
|
||||
}
|
||||
- return true;
|
||||
+ return assume_alua;
|
||||
}
|
||||
|
||||
int select_detect_pgpolicy(struct config *conf, struct multipath *mp)
|
||||
|
|
@ -1,64 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Wilck <mwilck@suse.com>
|
||||
Date: Fri, 24 Jan 2025 20:03:15 +0100
|
||||
Subject: [PATCH] Update NEWS.md for 0.10.2
|
||||
|
||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
---
|
||||
.github/actions/spelling/expect.txt | 2 ++
|
||||
NEWS.md | 23 ++++++++++++++++++++++-
|
||||
2 files changed, 24 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/.github/actions/spelling/expect.txt b/.github/actions/spelling/expect.txt
|
||||
index 000d5ebb..4ac57510 100644
|
||||
--- a/.github/actions/spelling/expect.txt
|
||||
+++ b/.github/actions/spelling/expect.txt
|
||||
@@ -11,6 +11,7 @@ ata
|
||||
autoconfig
|
||||
autodetected
|
||||
autoresize
|
||||
+backported
|
||||
barbie
|
||||
BINDIR
|
||||
blkid
|
||||
@@ -122,6 +123,7 @@ Lun
|
||||
lvm
|
||||
lvmteam
|
||||
Marzinski
|
||||
+misdetection
|
||||
mpath
|
||||
mpathb
|
||||
mpathpersist
|
||||
diff --git a/NEWS.md b/NEWS.md
|
||||
index 3c51553e..1b239ffa 100644
|
||||
--- a/NEWS.md
|
||||
+++ b/NEWS.md
|
||||
@@ -1,6 +1,27 @@
|
||||
# multipath-tools Release Notes
|
||||
|
||||
-## multipath-tools 0.10.1, 2024/11
|
||||
+## multipath-tools 0.10.2, 2025/02
|
||||
+
|
||||
+This release contains backported bug fixes from the stable-0.11.y branch.
|
||||
+
|
||||
+### Bug fixes
|
||||
+
|
||||
+* Fix multipathd crash because of invalid path group index value, for example
|
||||
+ if an invalid path device was removed from a map.
|
||||
+ Fixes [#105](https://github.com/opensvc/multipath-tools/issues/105).
|
||||
+* Make sure maps are reloaded in the path checker loop after detecting an
|
||||
+ inconsistent or wrong kernel state (e.g. missing or falsely mapped path
|
||||
+ device). Wrongly mapped paths will be unmapped and released to the system.
|
||||
+ Fixes another issue reported in
|
||||
+ [#105](https://github.com/opensvc/multipath-tools/issues/105).
|
||||
+* Fix the problem that `group_by_tpg` might be disabled if one or more
|
||||
+ paths were offline during initial configuration.
|
||||
+* Fix possible misdetection of changed pathgroups in a map.
|
||||
+* Fix the problem that if a map was scheduled to be reloaded already,
|
||||
+ `max_sectors_kb` might not be set on a path device that
|
||||
+ was being added to a multipath map. This problem was introduced in 0.9.9.
|
||||
+
|
||||
+## multipath-tools 0.10.1, 2025/01
|
||||
|
||||
This is the first bug fix release on the `stable-0.10.y` branch. It contains
|
||||
bug fixes from 0.11.0, and some CI-related fixes.
|
||||
|
|
@ -1,61 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Wilck <mwilck@suse.com>
|
||||
Date: Sat, 25 Jan 2025 00:49:19 +0100
|
||||
Subject: [PATCH] GitHub Workflows: fix abi-stable.yaml for pull request
|
||||
|
||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
||||
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||
---
|
||||
.github/workflows/abi-stable.yaml | 16 ++++++++++++----
|
||||
1 file changed, 12 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/.github/workflows/abi-stable.yaml b/.github/workflows/abi-stable.yaml
|
||||
index a6746f23..472914ce 100644
|
||||
--- a/.github/workflows/abi-stable.yaml
|
||||
+++ b/.github/workflows/abi-stable.yaml
|
||||
@@ -15,12 +15,16 @@ on:
|
||||
|
||||
jobs:
|
||||
reference-abi:
|
||||
- runs-on: ubuntu-20.04
|
||||
+ runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: get parent tag
|
||||
run: >
|
||||
echo ${{ github.ref }} |
|
||||
sed -E 's,refs/heads/stable-([0-9]\.[0-9]*)\.y,PARENT_TAG=\1.0,' >> $GITHUB_ENV
|
||||
+ if: ${{ github.event_name == 'push' }}
|
||||
+ - name: get parent tag
|
||||
+ run: echo PARENT_TAG=${{ github.base_ref }} >> $GITHUB_ENV
|
||||
+ if: ${{ github.event_name == 'pull_request' }}
|
||||
- name: assert parent tag
|
||||
run: /bin/false
|
||||
if: ${{ env.PARENT_TAG == '' }}
|
||||
@@ -45,20 +49,24 @@ jobs:
|
||||
path: abi
|
||||
|
||||
check-abi:
|
||||
- runs-on: ubuntu-20.04
|
||||
+ runs-on: ubuntu-22.04
|
||||
needs: reference-abi
|
||||
steps:
|
||||
- name: get parent tag
|
||||
run: >
|
||||
echo ${{ github.ref }} |
|
||||
sed -E 's,refs/heads/stable-([0-9]\.[0-9]*)\.y,PARENT_TAG=\1.0,' >> $GITHUB_ENV
|
||||
+ if: ${{ github.event_name == 'push' }}
|
||||
+ - name: get parent tag
|
||||
+ run: echo PARENT_TAG=${{ github.base_ref }} >> $GITHUB_ENV
|
||||
+ if: ${{ github.event_name == 'pull_request' }}
|
||||
- name: assert parent tag
|
||||
run: /bin/false
|
||||
if: ${{ env.PARENT_TAG == '' }}
|
||||
- - name: checkout ${{ env.PARENT_TAG }}
|
||||
+ - name: checkout ${{ github.base_ref }}
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
- ref: ${{ env.PARENT_TAG }}
|
||||
+ ref: ${{ github.base_ref }}
|
||||
- name: download ABI for ${{ env.PARENT_TAG }}
|
||||
id: download_abi
|
||||
uses: actions/download-artifact@v4
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
Name: device-mapper-multipath
|
||||
Version: 0.10.0
|
||||
Release: 5%{?dist}
|
||||
Version: 0.13.0
|
||||
Release: 2%{?dist}
|
||||
Summary: Tools to manage multipath devices using device-mapper
|
||||
# readline uses GPL-3.0-only
|
||||
License: GPL-2.0-only AND GPL-3.0-only
|
||||
|
|
@ -8,54 +8,22 @@ URL: http://christophe.varoqui.free.fr/
|
|||
|
||||
# The source for this package was pulled from upstream's git repo. Use the
|
||||
# following command to generate the tarball
|
||||
# curl -L https://github.com/opensvc/multipath-tools/archive/0.10.0.tar.gz -o multipath-tools-0.10.0.tgz
|
||||
Source0: multipath-tools-0.10.0.tgz
|
||||
# curl -L https://github.com/opensvc/multipath-tools/archive/0.13.0.tar.gz -o multipath-tools-0.13.0.tgz
|
||||
Source0: multipath-tools-0.13.0.tgz
|
||||
Source1: multipath.conf
|
||||
Patch0001: 0001-GitHub-workflows-use-upload-download-artifact-v4.patch
|
||||
Patch0002: 0002-GitHub-workflows-update-dawidd6-action-download-arti.patch
|
||||
Patch0003: 0003-Github-workflows-native.yml-use-mosteo-actions-docke.patch
|
||||
Patch0004: 0004-GitHub-workflows-native.yml-use-extra-job-for-clang.patch
|
||||
Patch0005: 0005-GitHub-workflows-native.yaml-make-test-and-archive-s.patch
|
||||
Patch0006: 0006-GitHub-workflows-enable-unit-tests-for-stable-branch.patch
|
||||
Patch0007: 0007-GitHub-Workflows-add-abi-check-for-stable-branches.patch
|
||||
Patch0008: 0008-libmultipath-dm_get_maps-don-t-bail-out-for-single-m.patch
|
||||
Patch0009: 0009-11-dm-mpath.rules.in-import-DM_COLDPLUG_SUSPENDED-on.patch
|
||||
Patch0010: 0010-11-dm-mpath.rules.in-handle-inactive-suspended-devic.patch
|
||||
Patch0011: 0011-11-dm-mpath.rules.in-clarify-DM_ACTIVATION-logic.patch
|
||||
Patch0012: 0012-11-dm-mpath-rules.in-skip-one-.DM_NOSCAN-check.patch
|
||||
Patch0013: 0013-11-dm-mpath.rules.in-set-.DM_NOSCAN-if-MPATH_UNCHANG.patch
|
||||
Patch0014: 0014-libmultipath-don-t-set-dev_loss_tmo-to-0-for-NO_PATH.patch
|
||||
Patch0015: 0015-multipathd-fix-deferred_failback_tick-for-reload-rem.patch
|
||||
Patch0016: 0016-multipathd-fix-an-unsigned-int-ovwerflow.patch
|
||||
Patch0017: 0017-libmpathutil-avoid-Wcast-function-type-mismatch-erro.patch
|
||||
Patch0018: 0018-Update-NEWS.md-for-0.10.1.patch
|
||||
Patch0019: 0019-libmultipath-don-t-print-error-message-if-WATCHDOG_U.patch
|
||||
Patch0020: 0020-libmultipath-reduce-log-level-of-map-X-has-multiple-.patch
|
||||
Patch0021: 0021-libmultipath-foreign-fix-memory-leak-in-nvme-foreign.patch
|
||||
Patch0022: 0022-libmultipath-add-condition-for-enqueueing-path-to-io.patch
|
||||
Patch0023: 0023-Additional-NEWS.md-updates-for-0.10.1.patch
|
||||
Patch0024: 0024-libmultipath-fix-handling-of-pp-pgindex.patch
|
||||
Patch0025: 0025-libmultipath-make-pgcmp-detect-if-map-is-missing-a-p.patch
|
||||
Patch0026: 0026-libmultipath-trigger-uevents-upon-map-creation-in-do.patch
|
||||
Patch0027: 0027-multipathd-trigger-uevents-upon-map-removal-in-coale.patch
|
||||
Patch0028: 0028-libmultipath-Don-t-skip-set_path_max_sectors_kb.patch
|
||||
Patch0029: 0029-libmultipath-stop-static-analyzer-complaint-in-init_.patch
|
||||
Patch0030: 0030-libmultipath-be-lenient-in-allowing-the-alua-based-p.patch
|
||||
Patch0031: 0031-Update-NEWS.md-for-0.10.2.patch
|
||||
Patch0032: 0032-GitHub-Workflows-fix-abi-stable.yaml-for-pull-reques.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
|
||||
Patch0045: 0045-RH-Add-mpathcleanup.patch
|
||||
Patch0001: 0001-RH-fixup-udev-rules-for-redhat.patch
|
||||
Patch0002: 0002-RH-Remove-the-property-blacklist-exception-builtin.patch
|
||||
Patch0003: 0003-RH-don-t-start-without-a-config-file.patch
|
||||
Patch0004: 0004-RH-Fix-nvme-function-missing-argument.patch
|
||||
Patch0005: 0005-RH-use-rpm-optflags-if-present.patch
|
||||
Patch0006: 0006-RH-add-mpathconf.patch
|
||||
Patch0007: 0007-RH-add-wwids-from-kernel-cmdline-mpath.wwids-with-A.patch
|
||||
Patch0008: 0008-RH-reset-default-find_mutipaths-value-to-off.patch
|
||||
Patch0009: 0009-RH-attempt-to-get-ANA-info-via-sysfs-first.patch
|
||||
Patch0010: 0010-RH-make-parse_vpd_pg83-match-scsi_id-output.patch
|
||||
Patch0011: 0011-RH-add-scsi-device-handlers-to-modules-load.d.patch
|
||||
Patch0012: 0012-RH-compile-with-libreadline-support.patch
|
||||
Patch0013: 0013-RH-Add-mpathcleanup.patch
|
||||
|
||||
# runtime
|
||||
Requires: %{name}-libs = %{version}-%{release}
|
||||
|
|
@ -143,7 +111,7 @@ This package contains the files needed to develop applications that use
|
|||
device-mapper-multipath's libdmmp C API library
|
||||
|
||||
%prep
|
||||
%autosetup -n multipath-tools-0.10.0 -p1
|
||||
%autosetup -n multipath-tools-0.13.0 -p1
|
||||
cp %{SOURCE1} .
|
||||
|
||||
%build
|
||||
|
|
@ -195,6 +163,7 @@ fi
|
|||
%{_sbindir}/mpathcleanup
|
||||
%{_sbindir}/mpathpersist
|
||||
%{_unitdir}/multipathd.service
|
||||
%{_unitdir}/multipathd-queueing.service
|
||||
%{_unitdir}/multipathd.socket
|
||||
%{_mandir}/man5/multipath.conf.5*
|
||||
%{_mandir}/man8/multipath.8*
|
||||
|
|
@ -265,6 +234,26 @@ fi
|
|||
%{_pkgconfdir}/libdmmp.pc
|
||||
|
||||
%changelog
|
||||
* Thu Nov 13 2025 Benjamin Marzinski <bmarzins@redhat.com> - 0.13.0-2
|
||||
- Move STI tests to TMT
|
||||
|
||||
* Tue Nov 4 2025 Benjamin Marzinski <bmarzins@redhat.com> - 0.13.0-1
|
||||
- Update source to upstream release 0.13.0
|
||||
* Previous patches 0001-0004 are included in the tarball
|
||||
- Install /lib/systemd/system/multipathd-queueing.service
|
||||
- Rename redhat patches
|
||||
* Previous patches 0005-0017 are now patches 0001-0013
|
||||
|
||||
* Wed Jul 23 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.11.1-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
|
||||
|
||||
* Thu Feb 27 2025 Benjamin Marzinski <bmarzins@redhat.com> - 0.11.1-1
|
||||
- Update source to upstream staging branch for 0.11.1 plus additional
|
||||
stable branch patches.
|
||||
* Previous patches 0001-0032 are included in the tarball
|
||||
- Rename redhat patches
|
||||
* Previous patches 0033-0045 are now patches 0005-0017
|
||||
|
||||
* Sat Feb 1 2025 Benjamin Marzinski <bmarzins@redhat.com> - 0.10.0-5
|
||||
- Update source to upstream staging branch for 0.10.y (will be 0.10.2 when
|
||||
merged).
|
||||
|
|
|
|||
58
plans/multipath.fmf
Normal file
58
plans/multipath.fmf
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
summary: basic functionality tests
|
||||
|
||||
provision:
|
||||
hardware:
|
||||
memory: ">= 2 GB"
|
||||
|
||||
prepare:
|
||||
how: install
|
||||
package:
|
||||
- device-mapper-multipath
|
||||
- perl
|
||||
|
||||
discover:
|
||||
how: shell
|
||||
tests:
|
||||
- name: medium_error_scsi_debug
|
||||
path: /tests/medium_error_scsi_debug
|
||||
test: ./main.sh
|
||||
duration: 15m
|
||||
- name: squelch_scsi_id
|
||||
path: /tests/squelch_scsi_id
|
||||
test: ./main.sh
|
||||
duration: 15m
|
||||
- name: multipathd_oom
|
||||
path: /tests/multipathd_oom
|
||||
test: ./main.sh
|
||||
duration: 15m
|
||||
- name: user_friendly_names
|
||||
path: /tests/user_friendly_names
|
||||
test: ./main.sh
|
||||
duration: 15m
|
||||
- name: kpartx_4k_aligned
|
||||
path: /tests/kpartx_4k_aligned
|
||||
test: ./main.sh
|
||||
duration: 15m
|
||||
- name: bindings
|
||||
path: /tests/bindings
|
||||
test: ./main.sh
|
||||
duration: 15m
|
||||
- name: restate_module
|
||||
path: /tests/restate_module
|
||||
test: ./main.sh
|
||||
duration: 15m
|
||||
- name: find_multipaths
|
||||
path: /tests/find_multipaths
|
||||
test: ./main.sh
|
||||
duration: 15m
|
||||
- name: multipath_conf_syntax
|
||||
path: /tests/multipath_conf_syntax
|
||||
test: ./main.sh
|
||||
duration: 15m
|
||||
- name: alias_clash
|
||||
path: /tests/alias_clash
|
||||
test: ./main.sh
|
||||
duration: 15m
|
||||
|
||||
execute:
|
||||
how: tmt
|
||||
2
sources
2
sources
|
|
@ -1,2 +1,2 @@
|
|||
SHA512 (multipath-tools-0.10.0.tgz) = 8f545609fa20df7547428f2929571dc0df87c17d9f61f11aad3559446c2e94755e18b1c4b3780b3de92ec2cbc450939ca15a9d6c95551eee4084064d83874b2d
|
||||
SHA512 (multipath-tools-0.13.0.tgz) = 75c84524ee27590b8b751ea500898a44e5ac3d58d55be6bcab919d0d423049db3a4466fcb9135705cf63ba074416973bb651255063269e9f682f11d21ba57e59
|
||||
SHA512 (multipath.conf) = 71953dce5a68adcf60a942305f5a66023e6f4c4baf53b1bfdb4edf65ed5b8e03db804363c36d1dcfd85591f4766f52b515269904c53b84d7b076da0b80b09942
|
||||
|
|
|
|||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
|
||||
standard-inventory-qcow2:
|
||||
qemu:
|
||||
m: 2G
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
---
|
||||
# No tests suitable for atomic environment
|
||||
# No tests suitable for container environment
|
||||
|
||||
# Tests suitable for classic environment
|
||||
- hosts: localhost
|
||||
roles:
|
||||
- role: standard-test-basic
|
||||
tags:
|
||||
- classic
|
||||
tests:
|
||||
- medium_error_scsi_debug:
|
||||
run: ./main.sh
|
||||
timeout: 15m
|
||||
- squelch_scsi_id:
|
||||
run: ./main.sh
|
||||
timeout: 15m
|
||||
- multipathd_oom:
|
||||
run: ./main.sh
|
||||
timeout: 15m
|
||||
- user_friendly_names:
|
||||
run: ./main.sh
|
||||
timeout: 15m
|
||||
- kpartx_4k_aligned:
|
||||
run: ./main.sh
|
||||
timeout: 15m
|
||||
- bindings:
|
||||
run: ./main.sh
|
||||
timeout: 15m
|
||||
- restate_module:
|
||||
run: ./main.sh
|
||||
timeout: 15m
|
||||
- find_multipaths:
|
||||
run: ./main.sh
|
||||
timeout: 15m
|
||||
- multipath_conf_syntax:
|
||||
run: ./main.sh
|
||||
timeout: 15m
|
||||
- alias_clash:
|
||||
run: ./main.sh
|
||||
timeout: 15m
|
||||
required_packages:
|
||||
- device-mapper-multipath
|
||||
- perl
|
||||
Loading…
Add table
Add a link
Reference in a new issue