diff options
Diffstat (limited to '0001-for-upstream-add-tpg_pref-prioritizer.patch')
-rw-r--r-- | 0001-for-upstream-add-tpg_pref-prioritizer.patch | 123 |
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 + |