Add (optional) arguments to dm-emc for influencing the switch-over command.
--- diff/drivers/md/dm-emc.c	2005-01-12 19:02:54.000000000 +0000
+++ source/drivers/md/dm-emc.c	2005-01-12 19:18:59.000000000 +0000
@@ -137,7 +137,6 @@
 	unsigned char *page22;
 	unsigned char long_trespass_pg[] = { 
 		0, 0, 0, 0, 
-		/* 0, 0, 0, 0x00,  */
 		TRESPASS_PAGE,        /* Page code */
 		0x09,                 /* Page length - 2 */
 		h->hr ? 0x01 : 0x81,  /* Trespass code + Honor reservation bit */
@@ -237,6 +236,28 @@
 static int emc_ctr(struct hw_handler *hwh, unsigned argc, char **argv)
 {
 	struct emc_handler *h;
+	unsigned hr, short_trespass;
+	
+	if (argc == 0) {
+		/* No arguments: use defaults */
+		hr = 0;
+		short_trespass = 0;
+	} else if (argc != 2) {
+		DMWARN("dm-emc hwhandler: incorrect number of arguments");
+		return -EINVAL;
+	} else {
+		if ((sscanf(argv[0], "%u", &short_trespass) != 1) 
+			|| (short_trespass > 1)) {
+			DMWARN("dm-emc: invalid trespass mode selected");
+			return -EINVAL;
+		} 
+		
+		if ((sscanf(argv[1], "%u", &hr) != 1) 
+			|| (hr > 1)) {
+			DMWARN("dm-emc: invalid honor reservation flag selected");
+			return -EINVAL;
+		} 
+	}
 
 	h = alloc_emc_handler();
 	if (!h)
@@ -244,13 +265,17 @@
 	
 	memset(h, 0, sizeof(*h));
 	
-	/* FIXME: Parse [0|1] parameter to send short trespass command for
-	 * FC series */
+	hwh->context = h;
 	
-	/* FIXME: Parse [0|1] parameter whether to set hr flag or not.
-	 */
+	if ((h->short_trespass = short_trespass))
+		DMWARN("dm-emc: short trespass command will be send");
+	else
+		DMWARN("dm-emc: long trespass command will be send");
 	
-	hwh->context = h;
+	if ((h->hr = hr))
+		DMWARN("dm-emc: honor reservation bit will be set");
+	else
+		DMWARN("dm-emc: honor reservation bit will not be set (default)");
 
 	return 0;
 }
