]> git.ipfire.org Git - people/ms/ipfire-3.x.git/blame - multipath-tools/patches/0001-for-upstream-add-tpg_pref-prioritizer.patch
Move all packages to root.
[people/ms/ipfire-3.x.git] / multipath-tools / patches / 0001-for-upstream-add-tpg_pref-prioritizer.patch
CommitLineData
dc01aad8
SS
1From faf6bfc96b98562626e0ea12aecb582032ff4cab Mon Sep 17 00:00:00 2001
2From: Fabio M. Di Nitto <fdinitto@redhat.com>
3Date: Mon, 19 Oct 2009 07:02:02 +0200
4Subject: [PATCH 1/1] for-upstream: add tpg_pref prioritizer
5
6Signed-off-by: Fabio M. Di Nitto <fdinitto@redhat.com>
7---
8:100644 100644 fc9277f... 1f40859... M libmultipath/prio.h
9:100644 100644 949a60a... 5021c04... M libmultipath/prioritizers/Makefile
10:100644 100644 0048a44... 22513ab... M libmultipath/prioritizers/alua.c
11:100644 100644 0531052... cd9c29d... M libmultipath/prioritizers/alua_rtpg.c
12:100644 100644 bddbbdd... daf95a6... M libmultipath/prioritizers/alua_spc3.h
13 libmultipath/prio.h | 1 +
14 libmultipath/prioritizers/Makefile | 10 ++++++++++
15 libmultipath/prioritizers/alua.c | 7 +++++++
16 libmultipath/prioritizers/alua_rtpg.c | 4 ++++
17 libmultipath/prioritizers/alua_spc3.h | 6 ++++++
18 5 files changed, 28 insertions(+), 0 deletions(-)
19
20diff --git a/libmultipath/prio.h b/libmultipath/prio.h
21index fc9277f..1f40859 100644
22--- a/libmultipath/prio.h
23+++ b/libmultipath/prio.h
24@@ -16,6 +16,7 @@
25 * Known prioritizers for use in hwtable.c
26 */
27 #define PRIO_ALUA "alua"
28+#define PRIO_TPG_PREF "tpg_pref"
29 #define PRIO_CONST "const"
30 #define PRIO_EMC "emc"
31 #define PRIO_HDS "hds"
32diff --git a/libmultipath/prioritizers/Makefile b/libmultipath/prioritizers/Makefile
33index 949a60a..5021c04 100644
34--- a/libmultipath/prioritizers/Makefile
35+++ b/libmultipath/prioritizers/Makefile
36@@ -11,6 +11,7 @@ LIBS = \
37 libprioemc.so \
38 libpriordac.so \
39 libprioalua.so \
40+ libpriotpg_pref.so \
41 libprionetapp.so \
42 libpriohds.so
43
44@@ -21,9 +22,18 @@ all: $(LIBS)
45 libprioalua.so: alua.o alua_rtpg.o
46 $(CC) $(SHARED_FLAGS) -o $@ $^
47
48+libpriotpg_pref.so: pref.o pref_rtpg.o
49+ $(CC) $(SHARED_FLAGS) -o $@ $^
50+
51 libprio%.so: %.o
52 $(CC) $(SHARED_FLAGS) -o $@ $^
53
54+pref.o: alua.c
55+ $(CC) $(CFLAGS) -DTPG_PREF -c -o $@ $<
56+
57+pref_rtpg.o: alua_rtpg.c
58+ $(CC) $(CFLAGS) -DTPG_PREF -c -o $@ $<
59+
60 install: $(LIBS)
61 $(INSTALL_PROGRAM) -m 755 libprio*.so $(DESTDIR)$(libdir)
62
63diff --git a/libmultipath/prioritizers/alua.c b/libmultipath/prioritizers/alua.c
64index 0048a44..22513ab 100644
65--- a/libmultipath/prioritizers/alua.c
66+++ b/libmultipath/prioritizers/alua.c
67@@ -28,6 +28,12 @@
68 int
69 get_alua_info(int fd)
70 {
71+#ifdef TPG_PREF
72+ char * aas_string[] = {
73+ [AAS_OPTIMIZED] = "preferred",
74+ [AAS_STANDBY] = "non-preferred",
75+ };
76+#else
77 char * aas_string[] = {
78 [AAS_OPTIMIZED] = "active/optimized",
79 [AAS_NON_OPTIMIZED] = "active/non-optimized",
80@@ -35,6 +41,7 @@ get_alua_info(int fd)
81 [AAS_UNAVAILABLE] = "unavailable",
82 [AAS_TRANSITIONING] = "transitioning between states",
83 };
84+#endif
85 int rc;
86 int tpg;
87
88diff --git a/libmultipath/prioritizers/alua_rtpg.c b/libmultipath/prioritizers/alua_rtpg.c
89index 0531052..cd9c29d 100644
90--- a/libmultipath/prioritizers/alua_rtpg.c
91+++ b/libmultipath/prioritizers/alua_rtpg.c
92@@ -293,7 +293,11 @@ get_asymmetric_access_state(int fd, unsigned int tpg)
93 "group.\n");
94 } else {
95 PRINT_DEBUG("pref=%i\n", dscr->b0);
96+#ifdef TPG_PREF
97+ rc = rtpg_tpg_dscr_get_pref(dscr);
98+#else
99 rc = rtpg_tpg_dscr_get_aas(dscr);
100+#endif
101 }
102 }
103 }
104diff --git a/libmultipath/prioritizers/alua_spc3.h b/libmultipath/prioritizers/alua_spc3.h
105index bddbbdd..daf95a6 100644
106--- a/libmultipath/prioritizers/alua_spc3.h
107+++ b/libmultipath/prioritizers/alua_spc3.h
108@@ -302,6 +302,12 @@ rtpg_tpg_dscr_get_aas(struct rtpg_tpg_dscr *d)
109 return (d->b0 & 0x0f);
110 }
111
112+static inline int
113+rtpg_tpg_dscr_get_pref(struct rtpg_tpg_dscr *d)
114+{
115+ return ((d->b0 & 0x80)?AAS_OPTIMIZED:AAS_STANDBY);
116+}
117+
118 struct rtpg_data {
119 unsigned char length[4]; /* size-4 */
120 struct rtpg_tpg_dscr data[0];
121--
1221.6.5.1
123