[dm-devel] multipath-tools ./multipath.conf.annotated lib ...

bmarzins at sourceware.org bmarzins at sourceware.org
Thu Apr 8 19:31:50 UTC 2010


CVSROOT:	/cvs/dm
Module name:	multipath-tools
Branch: 	RHEL5_FC6
Changes by:	bmarzins at sourceware.org	2010-04-08 19:31:50

Modified files:
	.              : multipath.conf.annotated 
	libmultipath   : config.h configure.c 
	multipath      : main.c 

Log message:
	Fix for bz #579789. Add a -q option to multipath to disable queueing,
	regardless of the configuration setting.  On boot, if a multipath device with
	no useable paths and queue_if_no_path is created, it can cause a hang if IO
	happens to it before multipathd is started.  Using the -q option during boot
	will cause multipath to fail the IO if no paths are up, until multipathd is
	started.

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.15&r2=1.18.2.16
http://sourceware.org/cgi-bin/cvsweb.cgi/multipath-tools/libmultipath/config.h.diff?cvsroot=dm&only_with_tag=RHEL5_FC6&r1=1.18.2.9&r2=1.18.2.10
http://sourceware.org/cgi-bin/cvsweb.cgi/multipath-tools/libmultipath/configure.c.diff?cvsroot=dm&only_with_tag=RHEL5_FC6&r1=1.2.2.6&r2=1.2.2.7
http://sourceware.org/cgi-bin/cvsweb.cgi/multipath-tools/multipath/main.c.diff?cvsroot=dm&only_with_tag=RHEL5_FC6&r1=1.44.2.7&r2=1.44.2.8

--- multipath-tools/multipath.conf.annotated	2010/01/27 22:33:28	1.18.2.15
+++ multipath-tools/multipath.conf.annotated	2010/04/08 19:31:49	1.18.2.16
@@ -84,7 +84,8 @@
 #	# name    : path_checker
 #	# scope   : multipath & multipathd
 #	# desc    : the default method used to determine the paths' state
-#	# values  : directio|tur|hp_sw|rdac|emc_clariion|readsector0|cciss_tur
+#	# values  : directio|tur|hp_sw|rdac|emc_clariion|readsector0|cciss_tur|
+#	#           hp_tur
 #	# default : readsector0
 #	#
 #	#path_checker	readsector0
@@ -484,7 +485,7 @@
 #		# scope   : multipathd
 #		# desc    : path checking alorithm to use to check path state
 #		# values  : directio|tur|hp_sw|rdac|emc_clariion|readsector0|
-#		#           cciss_tur
+#		#           cciss_tur|hp_tur
 #		# default : readsector0
 #		#
 #		path_checker		readsector0
--- multipath-tools/libmultipath/config.h	2010/01/27 16:46:48	1.18.2.9
+++ multipath-tools/libmultipath/config.h	2010/04/08 19:31:49	1.18.2.10
@@ -78,6 +78,7 @@
 	int flush_on_last_del;
 	int queue_without_daemon;
 	int checker_timeout;
+	int override_queueing;
 	uid_t uid;
 	gid_t gid;
 	mode_t mode;
--- multipath-tools/libmultipath/configure.c	2009/12/04 21:19:51	1.2.2.6
+++ multipath-tools/libmultipath/configure.c	2010/04/08 19:31:49	1.2.2.7
@@ -537,7 +537,9 @@
 		if (r == DOMAP_DRY)
 			continue;
 
-		if (mpp->no_path_retry != NO_PATH_RETRY_UNDEF) {
+		if (conf->override_queueing)
+			dm_queue_if_no_path(mpp->alias, 0);
+		else if (mpp->no_path_retry != NO_PATH_RETRY_UNDEF) {
 			if (mpp->no_path_retry == NO_PATH_RETRY_FAIL)
 				dm_queue_if_no_path(mpp->alias, 0);
 			else
--- multipath-tools/multipath/main.c	2009/05/04 18:12:07	1.44.2.7
+++ multipath-tools/multipath/main.c	2010/04/08 19:31:49	1.44.2.8
@@ -1,7 +1,7 @@
 /*
  * Soft:        multipath device mapper target autoconfig
  *
- * Version:     $Id: main.c,v 1.44.2.7 2009/05/04 18:12:07 bmarzins Exp $
+ * Version:     $Id: main.c,v 1.44.2.8 2010/04/08 19:31:49 bmarzins Exp $
  *
  * Author:      Christophe Varoqui
  *
@@ -84,6 +84,7 @@
 		"\t   2\t\t\tdefault verbosity\n" \
 		"\t   3\t\t\tprint debug information\n" \
 		"\t-h\t\tprint this usage text\n" \
+		"\t-q\t\tforce all maps to turn off queue_if_no_path\n"\
 		"\t-b file\t\tbindings file location\n" \
 		"\t-d\t\tdry run, do not create or update devmaps\n" \
 		"\t-l\t\tshow multipath topology (sysfs and DM info)\n" \
@@ -324,7 +325,7 @@
 	if (load_config(DEFAULT_CONFIGFILE))
 		exit(1);
 
-	while ((arg = getopt(argc, argv, ":dhl::FfM:v:p:b:r")) != EOF ) {
+	while ((arg = getopt(argc, argv, ":dhl::FfM:v:p:b:rq")) != EOF ) {
 		switch(arg) {
 		case 1: printf("optarg : %s\n",optarg);
 			break;
@@ -335,6 +336,9 @@
 
 			conf->verbosity = atoi(optarg);
 			break;
+		case 'q':
+			conf->override_queueing = 1;
+			break;
 		case 'b':
 			if (conf->bindings_file)
 				FREE(conf->bindings_file);	




More information about the dm-devel mailing list