147 lines
4.0 KiB
Diff
147 lines
4.0 KiB
Diff
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||
|
From: Martin Wilck <mwilck@suse.com>
|
||
|
Date: Wed, 23 Sep 2020 10:33:12 +0200
|
||
|
Subject: [PATCH] multipathd: move handling of io_err_stat_attr into
|
||
|
libmultipath
|
||
|
|
||
|
This thread attribute can be dynamically initialized and destroyed.
|
||
|
No need to carry it along in multipathd. Removal of the symbol
|
||
|
requires to bump the ABI version to 3.
|
||
|
|
||
|
Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||
|
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||
|
---
|
||
|
libmultipath/io_err_stat.c | 7 +++++--
|
||
|
libmultipath/libmultipath.version | 23 ++++++++---------------
|
||
|
multipathd/main.c | 2 --
|
||
|
3 files changed, 13 insertions(+), 19 deletions(-)
|
||
|
|
||
|
diff --git a/libmultipath/io_err_stat.c b/libmultipath/io_err_stat.c
|
||
|
index 58bc1dd2..5363049d 100644
|
||
|
--- a/libmultipath/io_err_stat.c
|
||
|
+++ b/libmultipath/io_err_stat.c
|
||
|
@@ -34,6 +34,7 @@
|
||
|
#include "lock.h"
|
||
|
#include "time-util.h"
|
||
|
#include "io_err_stat.h"
|
||
|
+#include "util.h"
|
||
|
|
||
|
#define TIMEOUT_NO_IO_NSEC 10000000 /*10ms = 10000000ns*/
|
||
|
#define FLAKY_PATHFAIL_THRESHOLD 2
|
||
|
@@ -70,8 +71,7 @@ struct io_err_stat_path {
|
||
|
int err_rate_threshold;
|
||
|
};
|
||
|
|
||
|
-pthread_t io_err_stat_thr;
|
||
|
-pthread_attr_t io_err_stat_attr;
|
||
|
+static pthread_t io_err_stat_thr;
|
||
|
|
||
|
static pthread_mutex_t io_err_thread_lock = PTHREAD_MUTEX_INITIALIZER;
|
||
|
static pthread_cond_t io_err_thread_cond = PTHREAD_COND_INITIALIZER;
|
||
|
@@ -727,6 +727,7 @@ static void *io_err_stat_loop(void *data)
|
||
|
int start_io_err_stat_thread(void *data)
|
||
|
{
|
||
|
int ret;
|
||
|
+ pthread_attr_t io_err_stat_attr;
|
||
|
|
||
|
if (uatomic_read(&io_err_thread_running) == 1)
|
||
|
return 0;
|
||
|
@@ -739,6 +740,7 @@ int start_io_err_stat_thread(void *data)
|
||
|
if (!paths)
|
||
|
goto destroy_ctx;
|
||
|
|
||
|
+ setup_thread_attr(&io_err_stat_attr, 32 * 1024, 0);
|
||
|
pthread_mutex_lock(&io_err_thread_lock);
|
||
|
pthread_cleanup_push(cleanup_unlock, &io_err_thread_lock);
|
||
|
|
||
|
@@ -750,6 +752,7 @@ int start_io_err_stat_thread(void *data)
|
||
|
&io_err_thread_lock) == 0);
|
||
|
|
||
|
pthread_cleanup_pop(1);
|
||
|
+ pthread_attr_destroy(&io_err_stat_attr);
|
||
|
|
||
|
if (ret) {
|
||
|
io_err_stat_log(0, "cannot create io_error statistic thread");
|
||
|
diff --git a/libmultipath/libmultipath.version b/libmultipath/libmultipath.version
|
||
|
index 0c300c81..84beb7f0 100644
|
||
|
--- a/libmultipath/libmultipath.version
|
||
|
+++ b/libmultipath/libmultipath.version
|
||
|
@@ -31,7 +31,7 @@
|
||
|
* The new version inherits the previous ones.
|
||
|
*/
|
||
|
|
||
|
-LIBMULTIPATH_2.0.0 {
|
||
|
+LIBMULTIPATH_3.0.0 {
|
||
|
global:
|
||
|
/* symbols referenced by multipath and multipathd */
|
||
|
add_foreign;
|
||
|
@@ -121,7 +121,6 @@ global:
|
||
|
init_checkers;
|
||
|
init_foreign;
|
||
|
init_prio;
|
||
|
- io_err_stat_attr;
|
||
|
io_err_stat_handle_pathfail;
|
||
|
is_path_valid;
|
||
|
is_quote;
|
||
|
@@ -242,30 +241,24 @@ global:
|
||
|
free_scandir_result;
|
||
|
sysfs_attr_get_value;
|
||
|
|
||
|
-local:
|
||
|
- *;
|
||
|
-};
|
||
|
-
|
||
|
-LIBMULTIPATH_2.1.0 {
|
||
|
-global:
|
||
|
+ /* added in 2.1.0 */
|
||
|
libmp_dm_task_run;
|
||
|
cleanup_mutex;
|
||
|
-} LIBMULTIPATH_2.0.0;
|
||
|
|
||
|
-LIBMULTIPATH_2.2.0 {
|
||
|
-global:
|
||
|
+ /* added in 2.2.0 */
|
||
|
libmp_get_multipath_config;
|
||
|
get_multipath_config;
|
||
|
libmp_put_multipath_config;
|
||
|
put_multipath_config;
|
||
|
init_config;
|
||
|
uninit_config;
|
||
|
-} LIBMULTIPATH_2.1.0;
|
||
|
|
||
|
-LIBMULTIPATH_2.3.0 {
|
||
|
-global:
|
||
|
+ /* added in 2.3.0 */
|
||
|
udev;
|
||
|
logsink;
|
||
|
libmultipath_init;
|
||
|
libmultipath_exit;
|
||
|
-} LIBMULTIPATH_2.2.0;
|
||
|
+
|
||
|
+local:
|
||
|
+ *;
|
||
|
+};
|
||
|
diff --git a/multipathd/main.c b/multipathd/main.c
|
||
|
index ce14bb66..abc6a9f7 100644
|
||
|
--- a/multipathd/main.c
|
||
|
+++ b/multipathd/main.c
|
||
|
@@ -2954,7 +2954,6 @@ child (__attribute__((unused)) void *param)
|
||
|
setup_thread_attr(&misc_attr, 64 * 1024, 0);
|
||
|
setup_thread_attr(&uevent_attr, DEFAULT_UEVENT_STACKSIZE * 1024, 0);
|
||
|
setup_thread_attr(&waiter_attr, 32 * 1024, 1);
|
||
|
- setup_thread_attr(&io_err_stat_attr, 32 * 1024, 0);
|
||
|
|
||
|
if (logsink == 1) {
|
||
|
setup_thread_attr(&log_attr, 64 * 1024, 0);
|
||
|
@@ -3164,7 +3163,6 @@ child (__attribute__((unused)) void *param)
|
||
|
rcu_assign_pointer(multipath_conf, NULL);
|
||
|
call_rcu(&conf->rcu, rcu_free_config);
|
||
|
pthread_attr_destroy(&waiter_attr);
|
||
|
- pthread_attr_destroy(&io_err_stat_attr);
|
||
|
#ifdef _DEBUG_
|
||
|
dbg_free_final(NULL);
|
||
|
#endif
|
||
|
--
|
||
|
2.17.2
|
||
|
|