|
|
5c2e41 |
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
|
5c2e41 |
From: Benjamin Marzinski <bmarzins@redhat.com>
|
|
|
5c2e41 |
Date: Wed, 10 Oct 2018 11:15:30 -0500
|
|
|
5c2e41 |
Subject: [PATCH] libmultipath: timeout on unresponsive tur thread
|
|
|
5c2e41 |
|
|
|
5c2e41 |
If the tur checker thread has been cancelled but isn't responding,
|
|
|
5c2e41 |
timeout instead of doing a sync check. This will keep one bad
|
|
|
5c2e41 |
device from impacting all of multipathd.
|
|
|
5c2e41 |
|
|
|
5c2e41 |
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
|
5c2e41 |
---
|
|
|
5c2e41 |
libmultipath/checkers/tur.c | 6 +++---
|
|
|
5c2e41 |
1 file changed, 3 insertions(+), 3 deletions(-)
|
|
|
5c2e41 |
|
|
|
5c2e41 |
diff --git a/libmultipath/checkers/tur.c b/libmultipath/checkers/tur.c
|
|
|
5c2e41 |
index 86c0cdc..b2a2170 100644
|
|
|
5c2e41 |
--- a/libmultipath/checkers/tur.c
|
|
|
5c2e41 |
+++ b/libmultipath/checkers/tur.c
|
|
|
5c2e41 |
@@ -305,10 +305,10 @@ int libcheck_check(struct checker * c)
|
|
|
5c2e41 |
} else {
|
|
|
5c2e41 |
if (uatomic_read(&ct->holders) > 1) {
|
|
|
5c2e41 |
/* The thread has been cancelled but hasn't
|
|
|
5c2e41 |
- * quilt. Fail back to synchronous mode */
|
|
|
5c2e41 |
- condlog(3, "%d:%d : tur checker failing back to sync",
|
|
|
5c2e41 |
+ * quit. exit with timeout. */
|
|
|
5c2e41 |
+ condlog(3, "%d:%d : tur thread not responding",
|
|
|
5c2e41 |
major(ct->devt), minor(ct->devt));
|
|
|
5c2e41 |
- return tur_check(c->fd, c->timeout, c->message);
|
|
|
5c2e41 |
+ return PATH_TIMEOUT;
|
|
|
5c2e41 |
}
|
|
|
5c2e41 |
/* Start new TUR checker */
|
|
|
5c2e41 |
pthread_mutex_lock(&ct->lock);
|
|
|
5c2e41 |
--
|
|
|
5c2e41 |
2.7.4
|
|
|
5c2e41 |
|