summaryrefslogtreecommitdiffstats
path: root/0001-for-upstream-add-tpg_pref-prioritizer.patch
diff options
context:
space:
mode:
Diffstat (limited to '0001-for-upstream-add-tpg_pref-prioritizer.patch')
-rw-r--r--0001-for-upstream-add-tpg_pref-prioritizer.patch123
1 files changed, 123 insertions, 0 deletions
diff --git a/0001-for-upstream-add-tpg_pref-prioritizer.patch b/0001-for-upstream-add-tpg_pref-prioritizer.patch
new file mode 100644
index 0000000..93b0af2
--- /dev/null
+++ b/0001-for-upstream-add-tpg_pref-prioritizer.patch
@@ -0,0 +1,123 @@
+From faf6bfc96b98562626e0ea12aecb582032ff4cab Mon Sep 17 00:00:00 2001
+From: Fabio M. Di Nitto <fdinitto@redhat.com>
+Date: Mon, 19 Oct 2009 07:02:02 +0200
+Subject: [PATCH 1/1] for-upstream: add tpg_pref prioritizer
+
+Signed-off-by: Fabio M. Di Nitto <fdinitto@redhat.com>
+---
+:100644 100644 fc9277f... 1f40859... M libmultipath/prio.h
+:100644 100644 949a60a... 5021c04... M libmultipath/prioritizers/Makefile
+:100644 100644 0048a44... 22513ab... M libmultipath/prioritizers/alua.c
+:100644 100644 0531052... cd9c29d... M libmultipath/prioritizers/alua_rtpg.c
+:100644 100644 bddbbdd... daf95a6... M libmultipath/prioritizers/alua_spc3.h
+ libmultipath/prio.h | 1 +
+ libmultipath/prioritizers/Makefile | 10 ++++++++++
+ libmultipath/prioritizers/alua.c | 7 +++++++
+ libmultipath/prioritizers/alua_rtpg.c | 4 ++++
+ libmultipath/prioritizers/alua_spc3.h | 6 ++++++
+ 5 files changed, 28 insertions(+), 0 deletions(-)
+
+diff --git a/libmultipath/prio.h b/libmultipath/prio.h
+index fc9277f..1f40859 100644
+--- a/libmultipath/prio.h
++++ b/libmultipath/prio.h
+@@ -16,6 +16,7 @@
+ * Known prioritizers for use in hwtable.c
+ */
+ #define PRIO_ALUA "alua"
++#define PRIO_TPG_PREF "tpg_pref"
+ #define PRIO_CONST "const"
+ #define PRIO_EMC "emc"
+ #define PRIO_HDS "hds"
+diff --git a/libmultipath/prioritizers/Makefile b/libmultipath/prioritizers/Makefile
+index 949a60a..5021c04 100644
+--- a/libmultipath/prioritizers/Makefile
++++ b/libmultipath/prioritizers/Makefile
+@@ -11,6 +11,7 @@ LIBS = \
+ libprioemc.so \
+ libpriordac.so \
+ libprioalua.so \
++ libpriotpg_pref.so \
+ libprionetapp.so \
+ libpriohds.so
+
+@@ -21,9 +22,18 @@ all: $(LIBS)
+ libprioalua.so: alua.o alua_rtpg.o
+ $(CC) $(SHARED_FLAGS) -o $@ $^
+
++libpriotpg_pref.so: pref.o pref_rtpg.o
++ $(CC) $(SHARED_FLAGS) -o $@ $^
++
+ libprio%.so: %.o
+ $(CC) $(SHARED_FLAGS) -o $@ $^
+
++pref.o: alua.c
++ $(CC) $(CFLAGS) -DTPG_PREF -c -o $@ $<
++
++pref_rtpg.o: alua_rtpg.c
++ $(CC) $(CFLAGS) -DTPG_PREF -c -o $@ $<
++
+ install: $(LIBS)
+ $(INSTALL_PROGRAM) -m 755 libprio*.so $(DESTDIR)$(libdir)
+
+diff --git a/libmultipath/prioritizers/alua.c b/libmultipath/prioritizers/alua.c
+index 0048a44..22513ab 100644
+--- a/libmultipath/prioritizers/alua.c
++++ b/libmultipath/prioritizers/alua.c
+@@ -28,6 +28,12 @@
+ int
+ get_alua_info(int fd)
+ {
++#ifdef TPG_PREF
++ char * aas_string[] = {
++ [AAS_OPTIMIZED] = "preferred",
++ [AAS_STANDBY] = "non-preferred",
++ };
++#else
+ char * aas_string[] = {
+ [AAS_OPTIMIZED] = "active/optimized",
+ [AAS_NON_OPTIMIZED] = "active/non-optimized",
+@@ -35,6 +41,7 @@ get_alua_info(int fd)
+ [AAS_UNAVAILABLE] = "unavailable",
+ [AAS_TRANSITIONING] = "transitioning between states",
+ };
++#endif
+ int rc;
+ int tpg;
+
+diff --git a/libmultipath/prioritizers/alua_rtpg.c b/libmultipath/prioritizers/alua_rtpg.c
+index 0531052..cd9c29d 100644
+--- a/libmultipath/prioritizers/alua_rtpg.c
++++ b/libmultipath/prioritizers/alua_rtpg.c
+@@ -293,7 +293,11 @@ get_asymmetric_access_state(int fd, unsigned int tpg)
+ "group.\n");
+ } else {
+ PRINT_DEBUG("pref=%i\n", dscr->b0);
++#ifdef TPG_PREF
++ rc = rtpg_tpg_dscr_get_pref(dscr);
++#else
+ rc = rtpg_tpg_dscr_get_aas(dscr);
++#endif
+ }
+ }
+ }
+diff --git a/libmultipath/prioritizers/alua_spc3.h b/libmultipath/prioritizers/alua_spc3.h
+index bddbbdd..daf95a6 100644
+--- a/libmultipath/prioritizers/alua_spc3.h
++++ b/libmultipath/prioritizers/alua_spc3.h
+@@ -302,6 +302,12 @@ rtpg_tpg_dscr_get_aas(struct rtpg_tpg_dscr *d)
+ return (d->b0 & 0x0f);
+ }
+
++static inline int
++rtpg_tpg_dscr_get_pref(struct rtpg_tpg_dscr *d)
++{
++ return ((d->b0 & 0x80)?AAS_OPTIMIZED:AAS_STANDBY);
++}
++
+ struct rtpg_data {
+ unsigned char length[4]; /* size-4 */
+ struct rtpg_tpg_dscr data[0];
+--
+1.6.5.1
+