[dm-devel] multipath-tools ./multipath.conf.annotated lib ...
bmarzins at sourceware.org
bmarzins at sourceware.org
Fri Aug 29 21:30:35 UTC 2008
CVSROOT: /cvs/dm
Module name: multipath-tools
Branch: RHEL5_FC6
Changes by: bmarzins at sourceware.org 2008-08-29 21:30:34
Modified files:
. : multipath.conf.annotated
libmultipath : dict.c structs.h
multipathd : main.c
Log message:
Fix for bz #457226. The kernel doesn't allow "ulimit -n unlimited" because
you can't set the max number of open fds greater than NR_OPEN. So multipath's
max_fds config option now allows the value "max" instead of "unlimited", which
sets the max open fds to NR_OPEN.
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/multipath-tools/multipath.conf.annotated.diff?cvsroot=dm&only_with_tag=RHEL5_FC6&r1=1.18.2.6&r2=1.18.2.7
http://sourceware.org/cgi-bin/cvsweb.cgi/multipath-tools/libmultipath/dict.c.diff?cvsroot=dm&only_with_tag=RHEL5_FC6&r1=1.17.2.5&r2=1.17.2.6
http://sourceware.org/cgi-bin/cvsweb.cgi/multipath-tools/libmultipath/structs.h.diff?cvsroot=dm&only_with_tag=RHEL5_FC6&r1=1.18.2.3&r2=1.18.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/multipath-tools/multipathd/main.c.diff?cvsroot=dm&only_with_tag=RHEL5_FC6&r1=1.69.2.8&r2=1.69.2.9
--- multipath-tools/multipath.conf.annotated 2008/08/25 20:59:05 1.18.2.6
+++ multipath-tools/multipath.conf.annotated 2008/08/29 21:30:34 1.18.2.7
@@ -84,7 +84,7 @@
# # scope : multipathd
# # desc : Sets the maximum number of open file descriptors for the
# # multipathd process.
-# # values : unlimited|n > 0
+# # values : max|n > 0
# # default : None
# #
# max_fds 8192
--- multipath-tools/libmultipath/dict.c 2008/08/25 20:59:06 1.17.2.5
+++ multipath-tools/libmultipath/dict.c 2008/08/29 21:30:34 1.17.2.6
@@ -155,8 +155,8 @@
return 1;
if (strlen(buff) == 9 &&
- !strcmp(buff, "unlimited"))
- conf->max_fds = MAX_FDS_UNLIMITED;
+ !strcmp(buff, "max"))
+ conf->max_fds = MAX_FDS_MAX;
else
conf->max_fds = atoi(buff);
FREE(buff);
@@ -1653,8 +1653,8 @@
if (!conf->max_fds)
return 0;
- if (conf->max_fds < 0)
- return snprintf(buff, len, "unlimited");
+ if (conf->max_fds == MAX_FDS_MAX)
+ return snprintf(buff, len, "max");
return snprintf(buff, len, "%d", conf->max_fds);
}
--- multipath-tools/libmultipath/structs.h 2008/08/25 20:59:06 1.18.2.3
+++ multipath-tools/libmultipath/structs.h 2008/08/29 21:30:34 1.18.2.4
@@ -20,7 +20,7 @@
#define NO_PATH_RETRY_FAIL -1
#define NO_PATH_RETRY_QUEUE -2
-#define MAX_FDS_UNLIMITED -1
+#define MAX_FDS_MAX (1024 * 1024)
enum free_path_switch {
KEEP_PATHS,
--- multipath-tools/multipathd/main.c 2008/08/27 19:14:58 1.69.2.8
+++ multipath-tools/multipathd/main.c 2008/08/29 21:30:34 1.69.2.9
@@ -1479,14 +1479,9 @@
if (conf->max_fds) {
struct rlimit fd_limit;
- if (conf->max_fds > 0) {
- fd_limit.rlim_cur = conf->max_fds;
- fd_limit.rlim_max = conf->max_fds;
- }
- else {
- fd_limit.rlim_cur = RLIM_INFINITY;
- fd_limit.rlim_max = RLIM_INFINITY;
- }
+
+ fd_limit.rlim_cur = conf->max_fds;
+ fd_limit.rlim_max = conf->max_fds;
if (setrlimit(RLIMIT_NOFILE, &fd_limit) < 0)
condlog(0, "can't set open fds limit to %d : %s\n",
conf->max_fds, strerror(errno));
More information about the dm-devel
mailing list