All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Rename prio callout program mpath_prio_netapp to mpath_prio_ontap
@ 2007-10-04  9:25 Ritesh Raj Sarraf
  2007-10-04 11:01 ` Alasdair G Kergon
  0 siblings, 1 reply; 4+ messages in thread
From: Ritesh Raj Sarraf @ 2007-10-04  9:25 UTC (permalink / raw)
  To: dm-devel


[-- Attachment #1.1.1: Type: text/plain, Size: 284 bytes --]

Hi,

Attached are 2 patches to rename the callout program from mpath_prio_netapp to 
mpath_prio_ontap.
The decision for the name change has mainly been for having a more generic 
name.

The patches were created against the multipath-tools git repository.


Thanks,
Ritesh

[-- Attachment #1.1.2: 0001-Rename-pp_netapp-to-pp_ontap-for-generic-naming-conv.patch --]
[-- Type: text/x-diff, Size: 17942 bytes --]

From 0e1c1dd546adc6d356e97c0872debf402220d818 Mon Sep 17 00:00:00 2001
From: Ritesh Raj Sarraf <rsarraf@netapp.com>
Date: Wed, 3 Oct 2007 16:27:59 +0530
Subject: [PATCH] Rename pp_netapp to pp_ontap for generic naming convention

This patch changes prio callout file mpath_prio_netapp to mpath_prio_ontap and
some other minor changes

Signed-off-by: Ritesh Raj Sarraf <rsarraf@netapp.com>
---
 libmultipath/hwtable.c              |    4 +-
 multipath-tools.spec.in             |    2 +-
 path_priority/pp_netapp/Makefile    |   22 ---
 path_priority/pp_netapp/pp_netapp.c |  268 ----------------------------------
 path_priority/pp_ontap/Makefile     |   22 +++
 path_priority/pp_ontap/pp_ontap.c   |  272 +++++++++++++++++++++++++++++++++++
 6 files changed, 297 insertions(+), 293 deletions(-)
 delete mode 100644 path_priority/pp_netapp/Makefile
 delete mode 100644 path_priority/pp_netapp/pp_netapp.c
 create mode 100644 path_priority/pp_ontap/Makefile
 create mode 100644 path_priority/pp_ontap/pp_ontap.c

diff --git a/libmultipath/hwtable.c b/libmultipath/hwtable.c
index ef761d7..6043c43 100644
--- a/libmultipath/hwtable.c
+++ b/libmultipath/hwtable.c
@@ -444,7 +444,7 @@ static struct hwentry default_hw[] = {
 		.vendor        = "NETAPP",
 		.product       = "LUN.*",
 		.getuid        = DEFAULT_GETUID,
-		.getprio       = "/sbin/mpath_prio_netapp /dev/%n",
+		.getprio       = "/sbin/mpath_prio_ontap /dev/%n",
 		.features      = "1 queue_if_no_path",
 		.hwhandler     = DEFAULT_HWHANDLER,
 		.selector      = DEFAULT_SELECTOR,
@@ -465,7 +465,7 @@ static struct hwentry default_hw[] = {
 		.vendor        = "IBM",
 		.product       = "Nseries.*",
 		.getuid        = DEFAULT_GETUID,
-		.getprio       = "/sbin/mpath_prio_netapp /dev/%n",
+		.getprio       = "/sbin/mpath_prio_ontap /dev/%n",
 		.features      = "1 queue_if_no_path",
 		.hwhandler     = DEFAULT_HWHANDLER,
 		.selector      = DEFAULT_SELECTOR,
diff --git a/multipath-tools.spec.in b/multipath-tools.spec.in
index 3caede6..5e0d1a8 100644
--- a/multipath-tools.spec.in
+++ b/multipath-tools.spec.in
@@ -48,7 +48,7 @@ rm -rf $RPM_BUILD_ROOT
 %{prefix}/sbin/mpath_prio_emc
 %{prefix}/sbin/mpath_prio_random
 %{prefix}/sbin/mpath_prio_balance_units
-%{prefix}/sbin/mpath_prio_netapp
+%{prefix}/sbin/mpath_prio_ontap
 %{prefix}/sbin/mpath_prio_rdac
 %{prefix}/sbin/mpath_prio_hds_modular
 %{prefix}/usr/share/man/man8/devmap_name.8.gz
diff --git a/path_priority/pp_netapp/Makefile b/path_priority/pp_netapp/Makefile
deleted file mode 100644
index b29d002..0000000
--- a/path_priority/pp_netapp/Makefile
+++ /dev/null
@@ -1,22 +0,0 @@
-EXEC		= mpath_prio_netapp
-BUILD		= glibc
-OBJS		= pp_netapp.o
-
-TOPDIR		= ../..
-include $(TOPDIR)/Makefile.inc
-
-all: $(BUILD)
-
-glibc:	$(OBJS)
-	$(CC) -o $(EXEC) $(OBJS) $(LDFLAGS)
-
-klibc:	$(OBJS)
-	$(CC) -static -o $(EXEC) $(OBJS)
-
-install: $(EXEC)
-	$(INSTALL_PROGRAM) -m 755 $(EXEC) $(DESTDIR)$(bindir)/$(EXEC)
-
-uninstall:
-	rm $(DESTDIR)$(bindir)/$(EXEC)
-clean:	
-	rm -f *.o $(EXEC)
diff --git a/path_priority/pp_netapp/pp_netapp.c b/path_priority/pp_netapp/pp_netapp.c
deleted file mode 100644
index 8562a95..0000000
--- a/path_priority/pp_netapp/pp_netapp.c
+++ /dev/null
@@ -1,268 +0,0 @@
-/* 
- * Copyright 2005 Network Appliance, Inc., All Rights Reserved
- * Author:  David Wysochanski available at davidw@netapp.com
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of 
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License v2 for more details.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <sys/ioctl.h>
-#include <errno.h>
-#include <assert.h>
-
-#include "../../libmultipath/sg_include.h"
-
-#define INQUIRY_CMD	0x12
-#define INQUIRY_CMDLEN	6
-#define DEFAULT_PRIO	10
-#define RESULTS_MAX	256
-#define SG_TIMEOUT	30000
-
-
-static void dump_cdb(unsigned char *cdb, int size)
-{
-	int i;
-	
-	fprintf(stderr, "- SCSI CDB: ");
-	for (i=0; i<size; i++) {
-		fprintf(stderr, "0x%02x ", cdb[i]);
-	}
-	fprintf(stderr, "\n");
-}
-
-static void process_sg_error(struct sg_io_hdr *io_hdr)
-{
-	int i;
-	
-	fprintf(stderr, "- masked_status=0x%02x, host_status=0x%02x, "
-		"driver_status=0x%02x\n", io_hdr->masked_status,
-		io_hdr->host_status, io_hdr->driver_status);
-	if (io_hdr->sb_len_wr > 0) {
-		fprintf(stderr, "- SCSI sense data: ");
-		for (i=0; i<io_hdr->sb_len_wr; i++) {
-			fprintf(stderr, "0x%02x ", io_hdr->sbp[i]);
-		}
-		fprintf(stderr, "\n");
-	}
-}
-
-/*
- * Returns:
- * -1: error, errno set
- *  0: success
- */
-static int send_gva(const char *dev, unsigned char pg,
-		    unsigned char *results, int *results_size)
-{
-	unsigned char sb[128];
-	unsigned char cdb[10] = {0xc0, 0, 0x1, 0xa, 0x98, 0xa,
-				 pg, sizeof(sb), 0, 0};
-	struct sg_io_hdr io_hdr;
-	int ret = -1;
-	int fd;
-
-	fd = open(dev, O_RDWR|O_NONBLOCK);
-
-	if (fd <= 0) {
-		fprintf(stderr, "Opening %s failed, errno=%d.\n", dev, errno);
-		goto out_no_close;
-	}
-
-	memset(&io_hdr, 0, sizeof (struct sg_io_hdr));
-	io_hdr.interface_id = 'S';
-	io_hdr.cmd_len = sizeof (cdb);
-	io_hdr.mx_sb_len = sizeof (sb);
-	io_hdr.dxfer_direction = SG_DXFER_FROM_DEV;
-	io_hdr.dxfer_len = *results_size;
-	io_hdr.dxferp = results;
-	io_hdr.cmdp = cdb;
-	io_hdr.sbp = sb;
-	io_hdr.timeout = SG_TIMEOUT;
-	io_hdr.pack_id = 0;
-	if (ioctl(fd, SG_IO, &io_hdr) < 0) {
-		fprintf(stderr, "SG_IO ioctl failed, errno=%d\n", errno);
-		dump_cdb(cdb, sizeof(cdb));
-		goto out;
-	}
-	if (io_hdr.info & SG_INFO_OK_MASK) {
-		fprintf(stderr, "SCSI error\n");
-		dump_cdb(cdb, sizeof(cdb));
-		process_sg_error(&io_hdr);
-		goto out;
-	}
-
-	if (results[4] != 0x0a || results[5] != 0x98 ||
-	    results[6] != 0x0a ||results[7] != 0x01) {
-		dump_cdb(cdb, sizeof(cdb));
-		fprintf(stderr, "GVA return wrong format ");
-		fprintf(stderr, "results[4-7] = 0x%02x 0x%02x 0x%02x 0x%02x\n",
-			results[4], results[5], results[6], results[7]);
-		goto out;
-	}
-	ret = 0;
- out:
-	close(fd);
- out_no_close:
-	return(ret);
-}
-
-/*
- * Retuns:
- * -1: Unable to obtain proxy info
- *  0: Device _not_ proxy path
- *  1: Device _is_ proxy path
- */
-static int get_proxy(const char *dev)
-{
-	unsigned char results[256];
-	unsigned char sb[128];
-	unsigned char cdb[INQUIRY_CMDLEN] = {INQUIRY_CMD, 1, 0xc1, 0,
-						   sizeof(sb), 0};
-	struct sg_io_hdr io_hdr;
-	int ret = -1;
-	int fd;
-
-	fd = open(dev, O_RDWR|O_NONBLOCK);
-
-	if (fd <= 0) {
-		fprintf(stderr, "Opening %s failed, errno=%d.\n", dev, errno);
-		goto out_no_close;
-	}
-
-	memset(&results, 0, sizeof (results));
-	memset(&io_hdr, 0, sizeof (struct sg_io_hdr));
-	io_hdr.interface_id = 'S';
-	io_hdr.cmd_len = sizeof (cdb);
-	io_hdr.mx_sb_len = sizeof (sb);
-	io_hdr.dxfer_direction = SG_DXFER_FROM_DEV;
-	io_hdr.dxfer_len = sizeof (results);
-	io_hdr.dxferp = results;
-	io_hdr.cmdp = cdb;
-	io_hdr.sbp = sb;
-	io_hdr.timeout = SG_TIMEOUT;
-	io_hdr.pack_id = 0;
-	if (ioctl(fd, SG_IO, &io_hdr) < 0) {
-		fprintf(stderr, "ioctl sending inquiry command failed, "
-			"errno=%d\n", errno);
-		dump_cdb(cdb, sizeof(cdb));
-		goto out;
-	}
-	if (io_hdr.info & SG_INFO_OK_MASK) {
-		fprintf(stderr, "SCSI error\n");
-		dump_cdb(cdb, sizeof(cdb));
-		process_sg_error(&io_hdr);
-		goto out;
-	}
-
-	if (results[1] != 0xc1 || results[8] != 0x0a ||
-	    results[9] != 0x98 || results[10] != 0x0a ||
-	    results[11] != 0x0 || results[12] != 0xc1 ||
-	    results[13] != 0x0) {
-		fprintf(stderr,"Proxy info page in unknown format - ");
-		fprintf(stderr,"results[8-13]=0x%02x 0x%02x 0x%02x 0x%02x "
-			"0x%02x 0x%02x\n",
-			results[8], results[9], results[10],
-			results[11], results[12], results[13]);
-		dump_cdb(cdb, sizeof(cdb));
-		goto out;
-	}
-	ret = (results[19] & 0x02) >> 1;
-
- out:
-	close(fd);
- out_no_close:
-	return(ret);
-}
-
-/*
- * Returns priority of device based on device info.
- *
- * 4: FCP non-proxy, FCP proxy unknown, or unable to determine protocol
- * 3: iSCSI HBA
- * 2: iSCSI software
- * 1: FCP proxy
- */
-static int netapp_prio(const char *dev)
-{
-	unsigned char results[RESULTS_MAX];
-	int results_size=RESULTS_MAX;
-	int rc;
-	int is_proxy;
-	int is_iscsi_software;
-	int is_iscsi_hardware;
-	int tot_len;
-
-	is_iscsi_software = is_iscsi_hardware = is_proxy = 0;
-
-	memset(&results, 0, sizeof (results));
-	rc = send_gva(dev, 0x41, results, &results_size);
-	if (rc == 0) {
-		tot_len = results[0] << 24 | results[1] << 16 |
-			  results[2] << 8 | results[3];
-		if (tot_len <= 8) {
-			goto try_fcp_proxy;
-		}
-		if (results[8] != 0x41) {
-			fprintf(stderr, "GVA page 0x41 error - "
-				"results[8] = 0x%x\n", results[8]);
-			goto try_fcp_proxy;
-		}
-		if ((strncmp((char *)&results[12], "ism_sw", 6) == 0) ||
-		    (strncmp((char *)&results[12], "iswt", 4) == 0)) {
-			is_iscsi_software = 1;
-			goto prio_select;
-		}
-		else if (strncmp((char *)&results[12], "ism_sn", 6) == 0) {
-			is_iscsi_hardware = 1;
-			goto prio_select;
-		}
-	}
-	
- try_fcp_proxy:	
-	rc = get_proxy(dev);
-	if (rc >= 0) {
-		is_proxy = rc;
-	}
-
- prio_select:
-	if (is_iscsi_hardware) {
-		return 3;
-	} else if (is_iscsi_software) {
-		return 2;
-	} else {
-		if (is_proxy) {
-			return 1;
-		} else {
-			/* Either non-proxy, or couldn't get proxy info */
-			return 4;
-		}
-	}
-}
-
-int
-main (int argc, char **argv)
-{
-	int prio;
-	if (argc != 2) {
-		fprintf(stderr, "Arguments wrong!\n");
-		prio = 0;
-	} else
-		prio = netapp_prio(argv[1]);
-	
-	printf("%d\n", prio);
-	exit(0);
-}
-
diff --git a/path_priority/pp_ontap/Makefile b/path_priority/pp_ontap/Makefile
new file mode 100644
index 0000000..8b8f901
--- /dev/null
+++ b/path_priority/pp_ontap/Makefile
@@ -0,0 +1,22 @@
+EXEC		= mpath_prio_ontap
+BUILD		= glibc
+OBJS		= pp_ontap.o
+
+TOPDIR		= ../..
+include $(TOPDIR)/Makefile.inc
+
+all: $(BUILD)
+
+glibc:	$(OBJS)
+	$(CC) -o $(EXEC) $(OBJS) $(LDFLAGS)
+
+klibc:	$(OBJS)
+	$(CC) -static -o $(EXEC) $(OBJS)
+
+install: $(EXEC)
+	install -m 755 $(EXEC) $(DESTDIR)$(bindir)/$(EXEC)
+
+uninstall:
+	rm $(DESTDIR)$(bindir)/$(EXEC)
+clean:	
+	rm -f *.o $(EXEC)
diff --git a/path_priority/pp_ontap/pp_ontap.c b/path_priority/pp_ontap/pp_ontap.c
new file mode 100644
index 0000000..38ab277
--- /dev/null
+++ b/path_priority/pp_ontap/pp_ontap.c
@@ -0,0 +1,272 @@
+/* 
+ * Copyright 2005 Network Appliance, Inc., All Rights Reserved
+ * Author:  David Wysochanski available at davidw@netapp.com
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of 
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License v2 for more details.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+#include <errno.h>
+#include <assert.h>
+
+#include "../../libmultipath/sg_include.h"
+
+#define INQUIRY_CMD	0x12
+#define INQUIRY_CMDLEN	6
+#define DEFAULT_PRIO	10
+#define RESULTS_MAX	256
+#define SG_TIMEOUT	60000
+
+
+static void dump_cdb(unsigned char *cdb, int size)
+{
+	int i;
+	
+	fprintf(stderr, "- SCSI CDB: ");
+	for (i=0; i<size; i++) {
+		fprintf(stderr, "0x%02x ", cdb[i]);
+	}
+	fprintf(stderr, "\n");
+}
+
+static void process_sg_error(struct sg_io_hdr *io_hdr)
+{
+	int i;
+	
+	fprintf(stderr, "- masked_status=0x%02x, host_status=0x%02x, "
+		"driver_status=0x%02x\n", io_hdr->masked_status,
+		io_hdr->host_status, io_hdr->driver_status);
+	if (io_hdr->sb_len_wr > 0) {
+		fprintf(stderr, "- SCSI sense data: ");
+		for (i=0; i<io_hdr->sb_len_wr; i++) {
+			fprintf(stderr, "0x%02x ", io_hdr->sbp[i]);
+		}
+		fprintf(stderr, "\n");
+	}
+}
+
+/*
+ * Returns:
+ * -1: error, errno set
+ *  0: success
+ */
+static int send_gva(const char *dev, unsigned char pg,
+		    unsigned char *results, int *results_size)
+{
+	unsigned char sb[128];
+	unsigned char cdb[10] = {0xc0, 0, 0x1, 0xa, 0x98, 0xa,
+				 pg, sizeof(sb), 0, 0};
+	struct sg_io_hdr io_hdr;
+	int ret = -1;
+	int fd;
+
+	fd = open(dev, O_RDWR|O_NONBLOCK);
+
+	if (fd <= 0) {
+		fprintf(stderr, "Opening %s failed, errno=%d.\n", dev, errno);
+		goto out_no_close;
+	}
+
+	memset(&io_hdr, 0, sizeof (struct sg_io_hdr));
+	io_hdr.interface_id = 'S';
+	io_hdr.cmd_len = sizeof (cdb);
+	io_hdr.mx_sb_len = sizeof (sb);
+	io_hdr.dxfer_direction = SG_DXFER_FROM_DEV;
+	io_hdr.dxfer_len = *results_size;
+	io_hdr.dxferp = results;
+	io_hdr.cmdp = cdb;
+	io_hdr.sbp = sb;
+	io_hdr.timeout = SG_TIMEOUT;
+	io_hdr.pack_id = 0;
+	if (ioctl(fd, SG_IO, &io_hdr) < 0) {
+		fprintf(stderr, "SG_IO ioctl failed, errno=%d\n", errno);
+		dump_cdb(cdb, sizeof(cdb));
+		goto out;
+	}
+	if (io_hdr.info & SG_INFO_OK_MASK) {
+		fprintf(stderr, "SCSI error\n");
+		dump_cdb(cdb, sizeof(cdb));
+		process_sg_error(&io_hdr);
+		goto out;
+	}
+
+	if (results[4] != 0x0a || results[5] != 0x98 ||
+	    results[6] != 0x0a ||results[7] != 0x01) {
+		dump_cdb(cdb, sizeof(cdb));
+		fprintf(stderr, "GVA return wrong format ");
+		fprintf(stderr, "results[4-7] = 0x%02x 0x%02x 0x%02x 0x%02x\n",
+			results[4], results[5], results[6], results[7]);
+		goto out;
+	}
+	ret = 0;
+ out:
+	close(fd);
+ out_no_close:
+	return(ret);
+}
+
+/*
+ * Retuns:
+ * -1: Unable to obtain proxy info
+ *  0: Device _not_ proxy path
+ *  1: Device _is_ proxy path
+ */
+static int get_proxy(const char *dev)
+{
+	unsigned char results[256];
+	unsigned char sb[128];
+	unsigned char cdb[INQUIRY_CMDLEN] = {INQUIRY_CMD, 1, 0xc1, 0,
+						   sizeof(sb), 0};
+	struct sg_io_hdr io_hdr;
+	int ret = -1;
+	int fd;
+
+	fd = open(dev, O_RDWR|O_NONBLOCK);
+
+	if (fd <= 0) {
+		fprintf(stderr, "Opening %s failed, errno=%d.\n", dev, errno);
+		goto out_no_close;
+	}
+
+	memset(&results, 0, sizeof (results));
+	memset(&io_hdr, 0, sizeof (struct sg_io_hdr));
+	io_hdr.interface_id = 'S';
+	io_hdr.cmd_len = sizeof (cdb);
+	io_hdr.mx_sb_len = sizeof (sb);
+	io_hdr.dxfer_direction = SG_DXFER_FROM_DEV;
+	io_hdr.dxfer_len = sizeof (results);
+	io_hdr.dxferp = results;
+	io_hdr.cmdp = cdb;
+	io_hdr.sbp = sb;
+	io_hdr.timeout = SG_TIMEOUT;
+	io_hdr.pack_id = 0;
+	if (ioctl(fd, SG_IO, &io_hdr) < 0) {
+		fprintf(stderr, "ioctl sending inquiry command failed, "
+			"errno=%d\n", errno);
+		dump_cdb(cdb, sizeof(cdb));
+		goto out;
+	}
+	if (io_hdr.info & SG_INFO_OK_MASK) {
+		fprintf(stderr, "SCSI error\n");
+		dump_cdb(cdb, sizeof(cdb));
+		process_sg_error(&io_hdr);
+		goto out;
+	}
+
+	if (results[1] != 0xc1 || results[8] != 0x0a ||
+	    results[9] != 0x98 || results[10] != 0x0a ||
+	    results[11] != 0x0 || results[12] != 0xc1 ||
+	    results[13] != 0x0) {
+		fprintf(stderr,"Proxy info page in unknown format - ");
+		fprintf(stderr,"results[8-13]=0x%02x 0x%02x 0x%02x 0x%02x "
+			"0x%02x 0x%02x\n",
+			results[8], results[9], results[10],
+			results[11], results[12], results[13]);
+		dump_cdb(cdb, sizeof(cdb));
+		goto out;
+	}
+	ret = (results[19] & 0x02) >> 1;
+
+ out:
+	close(fd);
+ out_no_close:
+	return(ret);
+}
+
+/*
+ * Returns priority of device based on device info.
+ *
+ * 4: FCP non-proxy, FCP proxy unknown, or unable to determine protocol
+ * 3: iSCSI HBA
+ * 2: iSCSI software
+ * 1: FCP proxy
+ */
+static int netapp_prio(const char *dev)
+{
+	unsigned char results[RESULTS_MAX];
+	int results_size=RESULTS_MAX;
+	int rc;
+	int is_proxy;
+	int is_iscsi_software;
+	int is_iscsi_hardware;
+	int tot_len;
+
+	is_iscsi_software = is_iscsi_hardware = is_proxy = 0;
+
+	memset(&results, 0, sizeof (results));
+	rc = send_gva(dev, 0x41, results, &results_size);
+	if (rc >= 0) {
+		tot_len = results[0] << 24 | results[1] << 16 |
+			  results[2] << 8 | results[3];
+		if (tot_len <= 8) {
+			goto try_fcp_proxy;
+		}
+		if (results[8] != 0x41) {
+			fprintf(stderr, "GVA page 0x41 error - "
+				"results[8] = 0x%x\n", results[8]);
+			goto try_fcp_proxy;
+		}
+		if ((strncmp((char *)&results[12], "ism_sw", 6) == 0) ||
+		    (strncmp((char *)&results[12], "iswt", 4) == 0)) {
+			is_iscsi_software = 1;
+			goto prio_select;
+		}
+		else if (strncmp((char *)&results[12], "ism_sn", 6) == 0) {
+			is_iscsi_hardware = 1;
+			goto prio_select;
+		}
+	} else {
+		return 0;
+	}
+	
+ try_fcp_proxy:	
+	rc = get_proxy(dev);
+	if (rc >= 0) {
+		is_proxy = rc;
+	} else {
+		return 0;
+	}
+
+ prio_select:
+	if (is_iscsi_hardware) {
+		return 3;
+	} else if (is_iscsi_software) {
+		return 2;
+	} else {
+		if (is_proxy) {
+			return 1;
+		} else {
+			/* Either non-proxy, or couldn't get proxy info */
+			return 4;
+		}
+	}
+}
+
+int
+main (int argc, char **argv)
+{
+	int prio;
+	if (argc != 2) {
+		fprintf(stderr, "Arguments wrong!\n");
+		prio = 0;
+	} else
+		prio = netapp_prio(argv[1]);
+	
+	printf("%d\n", prio);
+	exit(0);
+}
+
-- 
1.5.3.2


[-- Attachment #1.1.3: 0002-Updated-manpage-with-the-new-path-prio-callout-name.patch --]
[-- Type: text/x-diff, Size: 873 bytes --]

From c3fef2aad724614bcf6d004827b1e7bae9124a44 Mon Sep 17 00:00:00 2001
From: Ritesh Raj Sarraf <rsarraf@netapp.com>
Date: Wed, 3 Oct 2007 16:32:09 +0530
Subject: [PATCH] Updated manpage with the new path prio callout name


Signed-off-by: Ritesh Raj Sarraf <rsarraf@netapp.com>
---
 multipath/multipath.conf.5 |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/multipath/multipath.conf.5 b/multipath/multipath.conf.5
index c8ab6b0..96e4d27 100644
--- a/multipath/multipath.conf.5
+++ b/multipath/multipath.conf.5
@@ -130,7 +130,7 @@ Generate the path priority for EMC arrays
 .B mpath_prio_alua /dev/%n
 Generate the path priority based on the SCSI-3 ALUA settings.
 .TP
-.B mpath_prio_netapp /dev/%n
+.B mpath_prio_ontap /dev/%n
 Generate the path priority for NetApp arrays.
 .TP
 .B mpath_prio_rdac /dev/%n
-- 
1.5.3.2


[-- Attachment #1.2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

[-- Attachment #2: Type: text/plain, Size: 0 bytes --]



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] Rename prio callout program mpath_prio_netapp to mpath_prio_ontap
  2007-10-04  9:25 [PATCH] Rename prio callout program mpath_prio_netapp to mpath_prio_ontap Ritesh Raj Sarraf
@ 2007-10-04 11:01 ` Alasdair G Kergon
  2007-10-04 16:35   ` Ritesh Raj Sarraf
  0 siblings, 1 reply; 4+ messages in thread
From: Alasdair G Kergon @ 2007-10-04 11:01 UTC (permalink / raw)
  To: rsarraf; +Cc: device-mapper development

On Thu, Oct 04, 2007 at 02:55:19PM +0530, Ritesh Raj Sarraf wrote:
> Attached are 2 patches to rename the callout program from mpath_prio_netapp to 
> mpath_prio_ontap.

We're unable to take such a patch into RHEL directly because it is removing a
program that was there before and that breaks backwards compatibility, but
how about maintaining a symlink from the old location?

Alasdair
-- 
agk@redhat.com

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] Rename prio callout program mpath_prio_netapp to mpath_prio_ontap
  2007-10-04 11:01 ` Alasdair G Kergon
@ 2007-10-04 16:35   ` Ritesh Raj Sarraf
  2007-10-04 16:51     ` Alasdair G Kergon
  0 siblings, 1 reply; 4+ messages in thread
From: Ritesh Raj Sarraf @ 2007-10-04 16:35 UTC (permalink / raw)
  To: Alasdair G Kergon; +Cc: device-mapper development


[-- Attachment #1.1: Type: text/plain, Size: 1077 bytes --]

Hi,

On Thursday 04 October 2007, Alasdair G Kergon wrote:
> On Thu, Oct 04, 2007 at 02:55:19PM +0530, Ritesh Raj Sarraf wrote:
> > Attached are 2 patches to rename the callout program from
> > mpath_prio_netapp to mpath_prio_ontap.
>
> We're unable to take such a patch into RHEL directly because it is removing
> a program that was there before and that breaks backwards compatibility,
> but how about maintaining a symlink from the old location?
>

We've been shipping the mpath_prio_ontap callout program for more than a year 
with our software kit (which is supposed to be installed on top of our 
supported Linux operating systems). So customers who'd have followed our 
setup guides should not be hit by any compatibility issues.

We're looking forward to using "mpath_prio_ontap" as the name because it is 
more generic and serves our additional needs.

For RHEL5/4 series, is it okay to have "mpath_prio_netapp" as a link pointing 
to "mpath_prio_ontap" ?

As for RHEL6 and ahead, we could just remove "mpath_prio_netapp".


Thanks,
Ritesh

[-- Attachment #1.2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

[-- Attachment #2: Type: text/plain, Size: 0 bytes --]



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] Rename prio callout program mpath_prio_netapp to mpath_prio_ontap
  2007-10-04 16:35   ` Ritesh Raj Sarraf
@ 2007-10-04 16:51     ` Alasdair G Kergon
  0 siblings, 0 replies; 4+ messages in thread
From: Alasdair G Kergon @ 2007-10-04 16:51 UTC (permalink / raw)
  To: Ritesh Raj Sarraf; +Cc: device-mapper development

On Thu, Oct 04, 2007 at 10:05:16PM +0530, Ritesh Raj Sarraf wrote:
> For RHEL5/4 series, is it okay to have "mpath_prio_netapp" as a link pointing 
> to "mpath_prio_ontap" ?

Yes - we can add things easily; just not remove existing files or make
existing configuration parameters stop working unless there's a
compelling reason (like security or if it's the only way to fix a
serious design flaw).
 
> As for RHEL6 and ahead, we could just remove "mpath_prio_netapp".

Yes.

Alasdair
-- 
agk@redhat.com

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2007-10-04 16:51 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-10-04  9:25 [PATCH] Rename prio callout program mpath_prio_netapp to mpath_prio_ontap Ritesh Raj Sarraf
2007-10-04 11:01 ` Alasdair G Kergon
2007-10-04 16:35   ` Ritesh Raj Sarraf
2007-10-04 16:51     ` Alasdair G Kergon

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.