9abdc502cf
Rebased on top of additional commits staged for upstream * Previous patches 0048-0060 are now patches 0053-0054 & 0059-0069 Add 0048-libmultipath-add-device-to-hwtable.c.patch Add 0049-master-libmultipath-fix-use-after-free-when-iscsi-lo.patch Add 0050-libmultipath-warn-if-freeing-path-that-holds-mpp-hwe.patch Add 0051-libmultipath-warn-about-NULL-value-of-mpp-hwe.patch Add 0052-libmultipath-fix-mpp-hwe-handling-in-sync_paths.patch Add 0055-libmultipath-remove-code-duplication-in-path-countin.patch Add 0056-libmultipath-count-pending-paths-as-active-on-loads.patch Add 0057-libmultipath-deal-with-flushing-no-maps.patch Add 0058-multipath-deal-with-delegation-failures-correctly.patch Add 0070-multipath-add-libmpathvalid-library.patch * adds the libmpathvalid.so library to determine if devices are valid multipath paths. Add 0071-libmultipath-add-uid-failback-for-dasd-devices.patch Add 0072-libmultipath-add-ignore_udev_uid-option.patch
46 lines
1.4 KiB
Diff
46 lines
1.4 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Martin Wilck <mwilck@suse.com>
|
|
Date: Mon, 13 Jul 2020 13:07:43 +0200
|
|
Subject: [PATCH] libmultipath: fix mpp->hwe handling in sync_paths()
|
|
|
|
This is anologous to
|
|
|
|
1f96269 ("multipathd: fix mpp->hwe handling on path removal")
|
|
f6839eb ("multipathd: fix mpp->hwe handling when paths are freed")
|
|
|
|
When paths are removed from a map, we need to make sure that
|
|
mpp->hwe doesn't become stale.
|
|
|
|
Reported-by: Lixiaokeng <lixiaokeng@huawei.com>
|
|
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
|
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
---
|
|
libmultipath/structs_vec.c | 4 ++++
|
|
1 file changed, 4 insertions(+)
|
|
|
|
diff --git a/libmultipath/structs_vec.c b/libmultipath/structs_vec.c
|
|
index cde4dbe6..ede14297 100644
|
|
--- a/libmultipath/structs_vec.c
|
|
+++ b/libmultipath/structs_vec.c
|
|
@@ -260,6 +260,8 @@ void sync_paths(struct multipath *mpp, vector pathvec)
|
|
}
|
|
if (!found) {
|
|
condlog(3, "%s dropped path %s", mpp->alias, pp->dev);
|
|
+ if (mpp->hwe == pp->hwe)
|
|
+ mpp->hwe = NULL;
|
|
vector_del_slot(mpp->paths, i--);
|
|
orphan_path(pp, "path removed externally");
|
|
}
|
|
@@ -267,6 +269,8 @@ void sync_paths(struct multipath *mpp, vector pathvec)
|
|
update_mpp_paths(mpp, pathvec);
|
|
vector_foreach_slot (mpp->paths, pp, i)
|
|
pp->mpp = mpp;
|
|
+ if (mpp->hwe == NULL)
|
|
+ extract_hwe_from_path(mpp);
|
|
}
|
|
|
|
int
|
|
--
|
|
2.17.2
|
|
|