All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] multipath-tools: Add preferred TPG prioritizer
@ 2009-09-11 18:23 Benjamin Marzinski
  2009-09-14  6:24 ` Hannes Reinecke
  0 siblings, 1 reply; 3+ messages in thread
From: Benjamin Marzinski @ 2009-09-11 18:23 UTC (permalink / raw)
  To: device-mapper development

Instead of using the Target port's Asymmetric Access State to determine
priority, some users what to use the preferred port bit.  This patch makes
a new prioritizer, based off the ALUA prioritizer, but using the preferred
port bit instead.

Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
---
 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(+)

Index: multipath-tools-090902/libmultipath/prio.h
===================================================================
--- multipath-tools-090902.orig/libmultipath/prio.h
+++ multipath-tools-090902/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"
Index: multipath-tools-090902/libmultipath/prioritizers/alua.c
===================================================================
--- multipath-tools-090902.orig/libmultipath/prioritizers/alua.c
+++ multipath-tools-090902/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;
 
Index: multipath-tools-090902/libmultipath/prioritizers/alua_rtpg.c
===================================================================
--- multipath-tools-090902.orig/libmultipath/prioritizers/alua_rtpg.c
+++ multipath-tools-090902/libmultipath/prioritizers/alua_rtpg.c
@@ -293,7 +293,11 @@ get_asymmetric_access_state(int fd, unsi
 					"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
 			}
 		}
 	}
Index: multipath-tools-090902/libmultipath/prioritizers/alua_spc3.h
===================================================================
--- multipath-tools-090902.orig/libmultipath/prioritizers/alua_spc3.h
+++ multipath-tools-090902/libmultipath/prioritizers/alua_spc3.h
@@ -302,6 +302,12 @@ rtpg_tpg_dscr_get_aas(struct rtpg_tpg_ds
 	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];
Index: multipath-tools-090902/libmultipath/prioritizers/Makefile
===================================================================
--- multipath-tools-090902.orig/libmultipath/prioritizers/Makefile
+++ multipath-tools-090902/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)
 

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

* Re: [PATCH] multipath-tools: Add preferred TPG prioritizer
  2009-09-11 18:23 [PATCH] multipath-tools: Add preferred TPG prioritizer Benjamin Marzinski
@ 2009-09-14  6:24 ` Hannes Reinecke
  2009-09-14 15:59   ` Benjamin Marzinski
  0 siblings, 1 reply; 3+ messages in thread
From: Hannes Reinecke @ 2009-09-14  6:24 UTC (permalink / raw)
  To: device-mapper development

Benjamin Marzinski wrote:
> Instead of using the Target port's Asymmetric Access State to determine
> priority, some users what to use the preferred port bit.  This patch makes
> a new prioritizer, based off the ALUA prioritizer, but using the preferred
> port bit instead.
> 
Please, no.

This would mean that 'tpg_pref' would evaluate the PREF bit _only_,
with total disregard to the other settings.

We should be updating the existing 'alua' prioritizer to evaluate
the PREF bit together with the existing AAS status; then we could
be using it for all scenarios.

I think I got a patch somewhere ...

Cheers,

Hannes
-- 
Dr. Hannes Reinecke		      zSeries & Storage
hare@suse.de			      +49 911 74053 688
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: Markus Rex, HRB 16746 (AG Nürnberg)

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

* Re: [PATCH] multipath-tools: Add preferred TPG prioritizer
  2009-09-14  6:24 ` Hannes Reinecke
@ 2009-09-14 15:59   ` Benjamin Marzinski
  0 siblings, 0 replies; 3+ messages in thread
From: Benjamin Marzinski @ 2009-09-14 15:59 UTC (permalink / raw)
  To: device-mapper development

On Mon, Sep 14, 2009 at 08:24:39AM +0200, Hannes Reinecke wrote:
> Benjamin Marzinski wrote:
>> Instead of using the Target port's Asymmetric Access State to determine
>> priority, some users what to use the preferred port bit.  This patch makes
>> a new prioritizer, based off the ALUA prioritizer, but using the preferred
>> port bit instead.
>>
> Please, no.
>
> This would mean that 'tpg_pref' would evaluate the PREF bit _only_,
> with total disregard to the other settings.
>

The PREF bit isn't static.  It can change whenever the AAS status
changes.  I'd like to think that most devices do something sane like
removing the PREF bit from offline and unavailable ports. Perhaps that
is hoping for too much.  So making sure that the preferred port
is a sane choice makes sense.  I'm not sure what you patch does, but I
got the feeling that people wanted to choose, for instance, a preferred
standby port over a non-preferred active port.  If you have a patch that
does that, I'm all for it.  Otherwise, I can add some logic to make sure
that the preferred port is a reasonable one (not unavailable or offline).

How does that sound?

-Ben

> We should be updating the existing 'alua' prioritizer to evaluate
> the PREF bit together with the existing AAS status; then we could
> be using it for all scenarios.
>
> I think I got a patch somewhere ...
>
> Cheers,
>
> Hannes
> -- 
> Dr. Hannes Reinecke		      zSeries & Storage
> hare@suse.de			      +49 911 74053 688
> SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg
> GF: Markus Rex, HRB 16746 (AG Nürnberg)
>
> --
> dm-devel mailing list
> dm-devel@redhat.com
> https://www.redhat.com/mailman/listinfo/dm-devel

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

end of thread, other threads:[~2009-09-14 15:59 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-09-11 18:23 [PATCH] multipath-tools: Add preferred TPG prioritizer Benjamin Marzinski
2009-09-14  6:24 ` Hannes Reinecke
2009-09-14 15:59   ` Benjamin Marzinski

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.