[dm-devel] multipath-tools/libmultipath config.c config.h ...
bmarzins at sourceware.org
bmarzins at sourceware.org
Tue Apr 5 18:41:46 UTC 2011
CVSROOT: /cvs/dm
Module name: multipath-tools
Branch: RHEL5_FC6
Changes by: bmarzins at sourceware.org 2011-04-05 18:41:45
Modified files:
libmultipath : config.c config.h defaults.h dict.c discovery.c
Log message:
Fix for bz #674366. Multipath has a new defaults config value file_timeout.
This allows users to set the length of time multipathd will wait for a necessary
file to appear. Previously, it used the hardcoded value, WAIT_MAX_SECONDS.
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/multipath-tools/libmultipath/config.c.diff?cvsroot=dm&only_with_tag=RHEL5_FC6&r1=1.19.2.9&r2=1.19.2.10
http://sourceware.org/cgi-bin/cvsweb.cgi/multipath-tools/libmultipath/config.h.diff?cvsroot=dm&only_with_tag=RHEL5_FC6&r1=1.18.2.14&r2=1.18.2.15
http://sourceware.org/cgi-bin/cvsweb.cgi/multipath-tools/libmultipath/defaults.h.diff?cvsroot=dm&only_with_tag=RHEL5_FC6&r1=1.7.2.1&r2=1.7.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/multipath-tools/libmultipath/dict.c.diff?cvsroot=dm&only_with_tag=RHEL5_FC6&r1=1.17.2.18&r2=1.17.2.19
http://sourceware.org/cgi-bin/cvsweb.cgi/multipath-tools/libmultipath/discovery.c.diff?cvsroot=dm&only_with_tag=RHEL5_FC6&r1=1.32.2.19&r2=1.32.2.20
--- multipath-tools/libmultipath/config.c 2009/05/15 21:01:26 1.19.2.9
+++ multipath-tools/libmultipath/config.c 2011/04/05 18:41:45 1.19.2.10
@@ -417,6 +417,7 @@
conf->max_fds = 0;
conf->attribute_flags = 0;
conf->flush_on_last_del = 0;
+ conf->file_timeout = DEFAULT_FILE_TIMEOUT;
/*
* read the config file
--- multipath-tools/libmultipath/config.h 2011/02/18 18:27:00 1.18.2.14
+++ multipath-tools/libmultipath/config.h 2011/04/05 18:41:45 1.18.2.15
@@ -84,6 +84,7 @@
int pg_prio_calc;
int log_checker_err;
int fast_io_fail;
+ int file_timeout;
unsigned int dev_loss;
uid_t uid;
gid_t gid;
--- multipath-tools/libmultipath/defaults.h 2009/04/29 04:41:33 1.7.2.1
+++ multipath-tools/libmultipath/defaults.h 2011/04/05 18:41:45 1.7.2.2
@@ -12,6 +12,7 @@
#define DEFAULT_PGTIMEOUT -PGTIMEOUT_NONE
#define DEFAULT_USER_FRIENDLY_NAMES 0
#define DEFAULT_VERBOSITY 2
+#define DEFAULT_FILE_TIMEOUT 90
#define DEFAULT_CHECKINT 5
#define MAX_CHECKINT(a) (a << 2)
--- multipath-tools/libmultipath/dict.c 2011/03/18 19:50:40 1.17.2.18
+++ multipath-tools/libmultipath/dict.c 2011/04/05 18:41:45 1.17.2.19
@@ -85,6 +85,21 @@
}
static int
+file_timeout_handler(vector strvec)
+{
+ char * buff;
+ buff = set_value(strvec);
+ if (!buff)
+ return 1;
+ conf->file_timeout = atoi(buff);
+ if (conf->file_timeout < 0)
+ conf->file_timeout = DEFAULT_FILE_TIMEOUT;
+
+ FREE(buff);
+ return 0;
+}
+
+static int
udev_dir_handler(vector strvec)
{
conf->udev_dir = set_value(strvec);
@@ -1848,6 +1863,12 @@
}
static int
+snprint_file_timeout(char * buff, int len, void * data)
+{
+ return snprintf(buff, len, "%i", conf->file_timeout);
+}
+
+static int
snprint_def_udev_dir (char * buff, int len, void * data)
{
if (!conf->udev_dir)
@@ -2153,6 +2174,7 @@
install_keyword("gid", &def_gid_handler, &snprint_def_gid);
install_keyword("fast_io_fail_tmo", &def_fast_io_fail_handler, &snprint_def_fast_io_fail);
install_keyword("dev_loss_tmo", &def_dev_loss_handler, &snprint_def_dev_loss);
+ install_keyword("file_timeout", &file_timeout_handler, &snprint_file_timeout);
__deprecated install_keyword("default_selector", &def_selector_handler, NULL);
__deprecated install_keyword("default_path_grouping_policy", &def_pgpolicy_handler, NULL);
__deprecated install_keyword("default_getuid_callout", &def_getuid_callout_handler, NULL);
--- multipath-tools/libmultipath/discovery.c 2011/03/07 15:45:15 1.32.2.19
+++ multipath-tools/libmultipath/discovery.c 2011/04/05 18:41:45 1.32.2.20
@@ -181,7 +181,6 @@
* not multipath(8), ran by udev
*/
#if DAEMON
-#define WAIT_MAX_SECONDS 90
#define WAIT_LOOP_PER_SECOND 5
static int
@@ -190,7 +189,7 @@
int loop;
struct stat stats;
- loop = WAIT_MAX_SECONDS * WAIT_LOOP_PER_SECOND;
+ loop = conf->file_timeout * WAIT_LOOP_PER_SECOND;
while (--loop) {
if (stat(filename, &stats) == 0)
@@ -632,7 +631,7 @@
return 1;
#if DAEMON
- int loop = WAIT_MAX_SECONDS * WAIT_LOOP_PER_SECOND;
+ int loop = conf->file_timeout * WAIT_LOOP_PER_SECOND;
while (loop--) {
sdev = sysfs_open_device_path(attr_buff);
More information about the dm-devel
mailing list