!104 fix multipath return failure on an invalid remove command
From: @wave-information_0 Reviewed-by: @lixiaokeng, @liuzhiqiang26 Signed-off-by: @liuzhiqiang26
This commit is contained in:
commit
ce574b02e8
37
0016-multipath-return-failure-on-an-invalid-remove-cmd.patch
Normal file
37
0016-multipath-return-failure-on-an-invalid-remove-cmd.patch
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
From a7c13c340eb76c1b20580663e7ea2ad99b37022f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
Date: Wed, 30 Mar 2022 15:14:56 -0500
|
||||||
|
Subject: [PATCH] multipath: return failure on an invalid remove command
|
||||||
|
|
||||||
|
When "multipath -f" is run on a device that doesn't exist or isn't a
|
||||||
|
multipath device, the command will not remove any device, but it will
|
||||||
|
still return success. Multiple functions rely on _dm_flush_map()
|
||||||
|
returning success when called with name that doesn't match any
|
||||||
|
multipath device. So before calling _dm_flush_map(), call dm_is_mpath(),
|
||||||
|
to check if the device exists and is a multipath device, and return
|
||||||
|
failure if it's not.
|
||||||
|
|
||||||
|
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
|
---
|
||||||
|
multipath/main.c | 5 +++++
|
||||||
|
1 file changed, 5 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/multipath/main.c b/multipath/main.c
|
||||||
|
index 65ece83..743f3e0 100644
|
||||||
|
--- a/multipath/main.c
|
||||||
|
+++ b/multipath/main.c
|
||||||
|
@@ -1060,6 +1060,11 @@ main (int argc, char *argv[])
|
||||||
|
if (retries < 0)
|
||||||
|
retries = conf->remove_retries;
|
||||||
|
if (cmd == CMD_FLUSH_ONE) {
|
||||||
|
+ if (dm_is_mpath(dev) != 1) {
|
||||||
|
+ condlog(0, "%s is not a multipath device", dev);
|
||||||
|
+ r = RTVL_FAIL;
|
||||||
|
+ goto out;
|
||||||
|
+ }
|
||||||
|
r = dm_suspend_and_flush_map(dev, retries) ?
|
||||||
|
RTVL_FAIL : RTVL_OK;
|
||||||
|
goto out;
|
||||||
|
--
|
||||||
|
2.33.0
|
||||||
|
|
||||||
@ -1,7 +1,7 @@
|
|||||||
#needsrootforbuild
|
#needsrootforbuild
|
||||||
Name: multipath-tools
|
Name: multipath-tools
|
||||||
Version: 0.8.7
|
Version: 0.8.7
|
||||||
Release: 2
|
Release: 3
|
||||||
Summary: Tools to manage multipath devices with the device-mapper
|
Summary: Tools to manage multipath devices with the device-mapper
|
||||||
License: GPL-2.0-or-later and LGPL-2.0-only
|
License: GPL-2.0-or-later and LGPL-2.0-only
|
||||||
URL: http://christophe.varoqui.free.fr/
|
URL: http://christophe.varoqui.free.fr/
|
||||||
@ -24,6 +24,7 @@ Patch12: 0012-device-mapper-multipath-fix-find-multipath-failure.patch
|
|||||||
Patch13: 0013-kpartx-change-kpartx-file-and-default-bindir.patch
|
Patch13: 0013-kpartx-change-kpartx-file-and-default-bindir.patch
|
||||||
Patch14: 0014-remove-local-disk-from-pathvec.patch
|
Patch14: 0014-remove-local-disk-from-pathvec.patch
|
||||||
Patch15: 0015-clear-mpp-path-reference-when-path-is-freed-otherwis.patch
|
Patch15: 0015-clear-mpp-path-reference-when-path-is-freed-otherwis.patch
|
||||||
|
Patch16: 0016-multipath-return-failure-on-an-invalid-remove-cmd.patch
|
||||||
|
|
||||||
BuildRequires: multipath-tools, libcmocka, libcmocka-devel
|
BuildRequires: multipath-tools, libcmocka, libcmocka-devel
|
||||||
BuildRequires: gcc, libaio-devel, userspace-rcu-devel, device-mapper-devel >= 1.02.89
|
BuildRequires: gcc, libaio-devel, userspace-rcu-devel, device-mapper-devel >= 1.02.89
|
||||||
@ -170,6 +171,9 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Aug 31 2022 xueyamao<xueyamao@kylinos.cn> - 0.8.7-3
|
||||||
|
- fix multipath return failure on an invalid remove command
|
||||||
|
|
||||||
* Tue Mar 8 2022 lixiaokeng<lixiaokeng@huawei.com> - 0.8.7-2
|
* Tue Mar 8 2022 lixiaokeng<lixiaokeng@huawei.com> - 0.8.7-2
|
||||||
- don't create nvme multipath device when enable remove_local_path
|
- don't create nvme multipath device when enable remove_local_path
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user