device-mapper-multipath/0116-multipathd-Stop-double-counting-map-failures-for-no_.patch
Benjamin Marzinski 9ae3e98286 device-mapper-multipath-0.8.7-29
Add 0110-libmultipath-keep-track-of-queueing-state-in-feature.patch
Add 0111-libmultipath-export-partmap_in_use.patch
Add 0112-libmultipath-change-flush_on_last_del-to-fix-a-multi.patch
Add 0113-libmultipath-pad-dev_loss_tmo-to-avoid-race-with-no_.patch
  * Fixes RHEL-30272
Add 0114-libmultipath-remove-pathgroup-wildcard-options.patch
Add 0115-libmultipath-print-all-values-in-snprint_failback.patch
Add 0116-multipathd-Stop-double-counting-map-failures-for-no_.patch
Add 0117-multipath-tools-man-pages-add-missing-multipathd-com.patch
Add 0118-libmultipath-change-the-vend-prod-rev-printing.patch
Add 0119-multipath-tools-man-pages-Add-format-wildcard-descri.patch
  * Fixes RHEL-8304
Resolves: RHEL-8304
Resolves: RHEL-30272
2024-05-22 00:09:52 -04:00

35 lines
1.3 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Benjamin Marzinski <bmarzins@redhat.com>
Date: Thu, 9 May 2024 12:58:11 -0400
Subject: [PATCH] multipathd: Stop double counting map failures for
no_path_retry > 0
If no_path_retry was greater than 0, multipathd was counting a map
failure when recovery mode was entered, and again when queueing was
disabled. The first one is incorrect, since the map is still queueing.
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
---
libmultipath/structs_vec.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/libmultipath/structs_vec.c b/libmultipath/structs_vec.c
index 56915e96..b8e304e0 100644
--- a/libmultipath/structs_vec.c
+++ b/libmultipath/structs_vec.c
@@ -781,10 +781,13 @@ int verify_paths(struct multipath *mpp)
void update_queue_mode_del_path(struct multipath *mpp)
{
int active = count_active_paths(mpp);
+ bool is_queueing = mpp->features &&
+ strstr(mpp->features, "queue_if_no_path");
if (active == 0) {
enter_recovery_mode(mpp);
- if (mpp->no_path_retry != NO_PATH_RETRY_QUEUE)
+ if (mpp->no_path_retry == NO_PATH_RETRY_FAIL ||
+ (mpp->no_path_retry == NO_PATH_RETRY_UNDEF && !is_queueing))
mpp->stat_map_failures++;
}
condlog(2, "%s: remaining active paths: %d", mpp->alias, active);