* [PATCH 0/3] sysfs prioritizer
@ 2016-07-15 6:48 Hannes Reinecke
2016-07-15 6:48 ` [PATCH 1/3] libmultipath: call get_vpd_uid() if no uid_attribute is set Hannes Reinecke
` (3 more replies)
0 siblings, 4 replies; 8+ messages in thread
From: Hannes Reinecke @ 2016-07-15 6:48 UTC (permalink / raw)
To: Christophe Varoqui; +Cc: dm-devel
Hi all,
this is a resend of a previous patchset for adding a 'sysfs'
prioritizer. This prioritizer uses the sysfs attributes
'access_state' and 'exclusive_pref_bit' to generate the
path priority.
Priority values are identical to those from the 'alua'
prioritizer.
Note: the mentioned sysfs attributes are filled in by
every device handler, but only the 'alua' handler has
enough logic to keep them up-to-date.
So use with caution for other device handlers.
Hannes Reinecke (3):
libmultipath: call get_vpd_uid() if no uid_attribute is set
alua prioritizer: Fix typo 'perf'
multipathd: Add 'sysfs' prioritizer
libmultipath/discovery.c | 36 ++++++++++++++++++++++
libmultipath/discovery.h | 2 ++
libmultipath/prio.h | 1 +
libmultipath/prioritizers/Makefile | 3 +-
libmultipath/prioritizers/alua.c | 8 ++---
libmultipath/prioritizers/sysfs.c | 61 ++++++++++++++++++++++++++++++++++++++
libmultipath/propsel.c | 6 +++-
multipath/multipath.conf.5 | 19 ++++++++++--
8 files changed, 127 insertions(+), 9 deletions(-)
create mode 100644 libmultipath/prioritizers/sysfs.c
--
2.6.6
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/3] libmultipath: call get_vpd_uid() if no uid_attribute is set
2016-07-15 6:48 [PATCH 0/3] sysfs prioritizer Hannes Reinecke
@ 2016-07-15 6:48 ` Hannes Reinecke
2016-07-15 6:48 ` [PATCH 2/3] alua prioritizer: Fix typo 'perf' Hannes Reinecke
` (2 subsequent siblings)
3 siblings, 0 replies; 8+ messages in thread
From: Hannes Reinecke @ 2016-07-15 6:48 UTC (permalink / raw)
To: Christophe Varoqui; +Cc: Hannes Reinecke, dm-devel
If the uid_attribute is unset we should be calling get_vpd_uid()
directly without waiting for retrigger udev events.
Signed-off-by: Hannes Reinecke <hare@suse.com>
---
libmultipath/discovery.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c
index 9fcede7..e9e0313 100644
--- a/libmultipath/discovery.c
+++ b/libmultipath/discovery.c
@@ -1569,6 +1569,9 @@ get_uid (struct path * pp, int path_state)
"%s: failed to get udev uid: %s",
pp->dev, strerror(-len));
+ } else {
+ len = get_vpd_uid(pp);
+ origin = "sysfs";
}
conf = get_multipath_config();
retrigger = conf->retrigger_tries;
--
2.6.6
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/3] alua prioritizer: Fix typo 'perf'
2016-07-15 6:48 [PATCH 0/3] sysfs prioritizer Hannes Reinecke
2016-07-15 6:48 ` [PATCH 1/3] libmultipath: call get_vpd_uid() if no uid_attribute is set Hannes Reinecke
@ 2016-07-15 6:48 ` Hannes Reinecke
2016-07-15 6:48 ` [PATCH 3/3] multipathd: Add 'sysfs' prioritizer Hannes Reinecke
2016-07-22 9:44 ` [PATCH 0/3] sysfs prioritizer Christophe Varoqui
3 siblings, 0 replies; 8+ messages in thread
From: Hannes Reinecke @ 2016-07-15 6:48 UTC (permalink / raw)
To: Christophe Varoqui; +Cc: Hannes Reinecke, dm-devel
The bit is called the 'preferred_path' bit. Nothing do to with
performance.
Signed-off-by: Hannes Reinecke <hare@suse.com>
---
libmultipath/prioritizers/alua.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/libmultipath/prioritizers/alua.c b/libmultipath/prioritizers/alua.c
index b6c5176..6650a20 100644
--- a/libmultipath/prioritizers/alua.c
+++ b/libmultipath/prioritizers/alua.c
@@ -75,7 +75,7 @@ get_alua_info(struct path * pp, unsigned int timeout)
return rc;
}
-int get_exclusive_perf_arg(char *args)
+int get_exclusive_pref_arg(char *args)
{
char *ptr;
@@ -96,12 +96,12 @@ int getprio (struct path * pp, char * args, unsigned int timeout)
int rc;
int aas;
int priopath;
- int exclusive_perf;
+ int exclusive_pref;
if (pp->fd < 0)
return -ALUA_PRIO_NO_INFORMATION;
- exclusive_perf = get_exclusive_perf_arg(args);
+ exclusive_pref = get_exclusive_pref_arg(args);
rc = get_alua_info(pp, timeout);
if (rc >= 0) {
aas = (rc & 0x0f);
@@ -122,7 +122,7 @@ int getprio (struct path * pp, char * args, unsigned int timeout)
default:
rc = 0;
}
- if (priopath && (aas != AAS_OPTIMIZED || exclusive_perf))
+ if (priopath && (aas != AAS_OPTIMIZED || exclusive_pref))
rc += 80;
} else {
switch(-rc) {
--
2.6.6
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 3/3] multipathd: Add 'sysfs' prioritizer
2016-07-15 6:48 [PATCH 0/3] sysfs prioritizer Hannes Reinecke
2016-07-15 6:48 ` [PATCH 1/3] libmultipath: call get_vpd_uid() if no uid_attribute is set Hannes Reinecke
2016-07-15 6:48 ` [PATCH 2/3] alua prioritizer: Fix typo 'perf' Hannes Reinecke
@ 2016-07-15 6:48 ` Hannes Reinecke
2016-11-08 18:52 ` Xose Vazquez Perez
2016-07-22 9:44 ` [PATCH 0/3] sysfs prioritizer Christophe Varoqui
3 siblings, 1 reply; 8+ messages in thread
From: Hannes Reinecke @ 2016-07-15 6:48 UTC (permalink / raw)
To: Christophe Varoqui; +Cc: dm-devel
Recent kernels have an 'access_state' attribute which allows
us to read the asymmetric access state directly from sysfs.
Signed-off-by: Hannes Reinecke <hare@suse.de>
---
libmultipath/discovery.c | 33 +++++++++++++++++++++
libmultipath/discovery.h | 2 ++
libmultipath/prio.h | 1 +
libmultipath/prioritizers/Makefile | 3 +-
libmultipath/prioritizers/sysfs.c | 61 ++++++++++++++++++++++++++++++++++++++
libmultipath/propsel.c | 6 +++-
multipath/multipath.conf.5 | 19 ++++++++++--
7 files changed, 120 insertions(+), 5 deletions(-)
create mode 100644 libmultipath/prioritizers/sysfs.c
diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c
index e9e0313..07c60cf 100644
--- a/libmultipath/discovery.c
+++ b/libmultipath/discovery.c
@@ -209,6 +209,8 @@ declare_sysfs_get_str(devtype);
declare_sysfs_get_str(vendor);
declare_sysfs_get_str(model);
declare_sysfs_get_str(rev);
+declare_sysfs_get_str(access_state);
+declare_sysfs_get_str(preferred_path);
ssize_t
sysfs_get_vpd (struct udev_device * udev, int pg,
@@ -484,6 +486,37 @@ int sysfs_get_iscsi_ip_address(struct path *pp, char *ip_address)
return 1;
}
+int
+sysfs_get_asymmetric_access_state(struct path *pp, char *buff, int buflen)
+{
+ struct udev_device *parent = pp->udev;
+ char value[16], *eptr;
+ unsigned int preferred;
+
+ while (parent) {
+ const char *subsys = udev_device_get_subsystem(parent);
+ if (subsys && !strncmp(subsys, "scsi", 4))
+ break;
+ parent = udev_device_get_parent(parent);
+ }
+
+ if (!parent)
+ return -1;
+
+ if (sysfs_get_access_state(parent, buff, buflen) <= 0)
+ return -1;
+
+ if (sysfs_get_preferred_path(parent, value, 16) <= 0)
+ return 0;
+
+ preferred = strtoul(value, &eptr, 0);
+ if (value == eptr || preferred == ULONG_MAX) {
+ /* Parse error, ignore */
+ return 0;
+ }
+ return preferred;
+}
+
static void
sysfs_set_rport_tmo(struct multipath *mpp, struct path *pp)
{
diff --git a/libmultipath/discovery.h b/libmultipath/discovery.h
index 321d930..0f5b1e6 100644
--- a/libmultipath/discovery.h
+++ b/libmultipath/discovery.h
@@ -47,6 +47,8 @@ int sysfs_get_host_pci_name(struct path *pp, char *pci_name);
int sysfs_get_iscsi_ip_address(struct path *pp, char *ip_address);
ssize_t sysfs_get_vpd (struct udev_device * udev, int pg, unsigned char * buff,
size_t len);
+int sysfs_get_asymmetric_access_state(struct path *pp,
+ char *buff, int buflen);
/*
* discovery bitmask
diff --git a/libmultipath/prio.h b/libmultipath/prio.h
index 7195986..032028e 100644
--- a/libmultipath/prio.h
+++ b/libmultipath/prio.h
@@ -30,6 +30,7 @@ struct path;
#define PRIO_RANDOM "random"
#define PRIO_RDAC "rdac"
#define PRIO_WEIGHTED_PATH "weightedpath"
+#define PRIO_SYSFS "sysfs"
/*
* Value used to mark the fact prio was not defined
diff --git a/libmultipath/prioritizers/Makefile b/libmultipath/prioritizers/Makefile
index 903a139..bb76700 100644
--- a/libmultipath/prioritizers/Makefile
+++ b/libmultipath/prioritizers/Makefile
@@ -15,7 +15,8 @@ LIBS = \
libprioontap.so \
libpriorandom.so \
libpriordac.so \
- libprioweightedpath.so
+ libprioweightedpath.so \
+ libpriosysfs.so
CFLAGS += -I..
diff --git a/libmultipath/prioritizers/sysfs.c b/libmultipath/prioritizers/sysfs.c
new file mode 100644
index 0000000..ff567df
--- /dev/null
+++ b/libmultipath/prioritizers/sysfs.c
@@ -0,0 +1,61 @@
+/*
+ * sysfs.c
+ *
+ * Copyright(c) 2016 Hannes Reinecke, SUSE Linux GmbH
+ */
+
+#include <stdio.h>
+
+#include "structs.h"
+#include "discovery.h"
+#include "prio.h"
+
+static const struct {
+ unsigned char value;
+ char *name;
+} sysfs_access_state_map[] = {
+ { 50, "active/optimized" },
+ { 10, "active/non-optimized" },
+ { 5, "lba-dependent" },
+ { 1, "standby" },
+};
+
+int get_exclusive_pref_arg(char *args)
+{
+ char *ptr;
+
+ if (args == NULL)
+ return 0;
+ ptr = strstr(args, "exclusive_pref_bit");
+ if (!ptr)
+ return 0;
+ if (ptr[18] != '\0' && ptr[18] != ' ' && ptr[18] != '\t')
+ return 0;
+ if (ptr != args && ptr[-1] != ' ' && ptr[-1] != '\t')
+ return 0;
+ return 1;
+}
+
+int getprio (struct path * pp, char * args, unsigned int timeout)
+{
+ int prio = 0, rc, i;
+ char buff[512];
+ int exclusive_pref;
+
+ exclusive_pref = get_exclusive_pref_arg(args);
+ rc = sysfs_get_asymmetric_access_state(pp, buff, 512);
+ if (rc < 0)
+ return PRIO_UNDEF;
+ prio = 0;
+ for (i = 0; i < 4; i++) {
+ if (!strncmp(buff, sysfs_access_state_map[i].name,
+ strlen(sysfs_access_state_map[i].name))) {
+ prio = sysfs_access_state_map[i].value;
+ break;
+ }
+ }
+ if (rc > 0 && (prio != 50 || exclusive_pref))
+ prio += 80;
+
+ return prio;
+}
diff --git a/libmultipath/propsel.c b/libmultipath/propsel.c
index beb0798..0caf269 100644
--- a/libmultipath/propsel.c
+++ b/libmultipath/propsel.c
@@ -375,6 +375,8 @@ detect_prio(struct config *conf, struct path * pp)
struct prio *p = &pp->prio;
int tpgs = 0;
unsigned int timeout = conf->checker_timeout;
+ char buff[512];
+ char *default_prio = PRIO_ALUA;
if ((tpgs = get_target_port_group_support(pp->fd, timeout)) <= 0)
return;
@@ -384,7 +386,9 @@ detect_prio(struct config *conf, struct path * pp)
return;
if (get_asymmetric_access_state(pp->fd, ret, timeout) < 0)
return;
- prio_get(conf->multipath_dir, p, PRIO_ALUA, DEFAULT_PRIO_ARGS);
+ if (sysfs_get_asymmetric_access_state(pp, buff, 512) >= 0)
+ default_prio = PRIO_SYSFS;
+ prio_get(conf->multipath_dir, p, default_prio, DEFAULT_PRIO_ARGS);
}
#define set_prio(dir, src, msg) \
diff --git a/multipath/multipath.conf.5 b/multipath/multipath.conf.5
index 709ab3c..fc3877f 100644
--- a/multipath/multipath.conf.5
+++ b/multipath/multipath.conf.5
@@ -212,6 +212,11 @@ are implemented:
.I const
Return a constant priority of \fI1\fR.
.TP
+.I sysfs
+Use the sysfs attributes \fIaccess_state\fR and \fIpreferred_path\fR to
+generate the path priority. This prioritizer accepts the optional prio_arg
+.I exclusive_pref_bit
+.TP
.I emc
(Hardware-dependent)
Generate the path priority for DGC class arrays as CLARiiON CX/AX and
@@ -277,8 +282,8 @@ these values can be looked up through sysfs or by running
.I alua
If
.I exclusive_pref_bit
-is set, paths with the TPGS pref bit set will always be in their own path
-group.
+is set, paths with the \fIpreferred path\fR bit set will always
+be in their own path group.
.TP
.I datacore
.I preferredsds
@@ -569,8 +574,16 @@ If set to
.I yes
, multipath will try to detect if the device supports SCSI-3 ALUA. If so, the
device will automatically use the
+.I sysfs
+prioritizer if the required sysfs attributes
+.I access_state
+and
+.I preferred_path
+are supported, or the
.I alua
-prioritizer. If not, the prioritizer will be selected as usual.
+prioritizer if not. If set to
+.I no
+, the prioritizer will be selected as usual.
.RS
.TP
Default value is: \fBno\fR
--
2.6.6
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 0/3] sysfs prioritizer
2016-07-15 6:48 [PATCH 0/3] sysfs prioritizer Hannes Reinecke
` (2 preceding siblings ...)
2016-07-15 6:48 ` [PATCH 3/3] multipathd: Add 'sysfs' prioritizer Hannes Reinecke
@ 2016-07-22 9:44 ` Christophe Varoqui
3 siblings, 0 replies; 8+ messages in thread
From: Christophe Varoqui @ 2016-07-22 9:44 UTC (permalink / raw)
To: Hannes Reinecke; +Cc: device-mapper development
[-- Attachment #1.1: Type: text/plain, Size: 1318 bytes --]
Finally merged.
Thanks.
On Fri, Jul 15, 2016 at 8:48 AM, Hannes Reinecke <hare@suse.de> wrote:
> Hi all,
>
> this is a resend of a previous patchset for adding a 'sysfs'
> prioritizer. This prioritizer uses the sysfs attributes
> 'access_state' and 'exclusive_pref_bit' to generate the
> path priority.
> Priority values are identical to those from the 'alua'
> prioritizer.
>
> Note: the mentioned sysfs attributes are filled in by
> every device handler, but only the 'alua' handler has
> enough logic to keep them up-to-date.
> So use with caution for other device handlers.
>
> Hannes Reinecke (3):
> libmultipath: call get_vpd_uid() if no uid_attribute is set
> alua prioritizer: Fix typo 'perf'
> multipathd: Add 'sysfs' prioritizer
>
> libmultipath/discovery.c | 36 ++++++++++++++++++++++
> libmultipath/discovery.h | 2 ++
> libmultipath/prio.h | 1 +
> libmultipath/prioritizers/Makefile | 3 +-
> libmultipath/prioritizers/alua.c | 8 ++---
> libmultipath/prioritizers/sysfs.c | 61
> ++++++++++++++++++++++++++++++++++++++
> libmultipath/propsel.c | 6 +++-
> multipath/multipath.conf.5 | 19 ++++++++++--
> 8 files changed, 127 insertions(+), 9 deletions(-)
> create mode 100644 libmultipath/prioritizers/sysfs.c
>
> --
> 2.6.6
>
>
[-- Attachment #1.2: Type: text/html, Size: 1882 bytes --]
[-- Attachment #2: Type: text/plain, Size: 0 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 3/3] multipathd: Add 'sysfs' prioritizer
2016-07-15 6:48 ` [PATCH 3/3] multipathd: Add 'sysfs' prioritizer Hannes Reinecke
@ 2016-11-08 18:52 ` Xose Vazquez Perez
2016-11-09 6:49 ` Hannes Reinecke
0 siblings, 1 reply; 8+ messages in thread
From: Xose Vazquez Perez @ 2016-11-08 18:52 UTC (permalink / raw)
To: Hannes Reinecke; +Cc: dm-devel
On 07/15/2016 08:48 AM, Hannes Reinecke wrote:
> Recent kernels have an 'access_state' attribute which allows
> us to read the asymmetric access state directly from sysfs.
Hi Hannes,
with this patch it's impossible to select/autodetect ALUA.
sysfs always takes precedence over alua.
"detect_prio no" was added to overrides section, to make
it work again.
SLES 12-SP2
Thank you.
> ---
> libmultipath/discovery.c | 33 +++++++++++++++++++++
> libmultipath/discovery.h | 2 ++
> libmultipath/prio.h | 1 +
> libmultipath/prioritizers/Makefile | 3 +-
> libmultipath/prioritizers/sysfs.c | 61 ++++++++++++++++++++++++++++++++++++++
> libmultipath/propsel.c | 6 +++-
> multipath/multipath.conf.5 | 19 ++++++++++--
> 7 files changed, 120 insertions(+), 5 deletions(-)
> create mode 100644 libmultipath/prioritizers/sysfs.c
>
[ ...]
> diff --git a/libmultipath/propsel.c b/libmultipath/propsel.c
> index beb0798..0caf269 100644
> --- a/libmultipath/propsel.c
> +++ b/libmultipath/propsel.c
> @@ -375,6 +375,8 @@ detect_prio(struct config *conf, struct path * pp)
> struct prio *p = &pp->prio;
> int tpgs = 0;
> unsigned int timeout = conf->checker_timeout;
> + char buff[512];
> + char *default_prio = PRIO_ALUA;
>
> if ((tpgs = get_target_port_group_support(pp->fd, timeout)) <= 0)
> return;
> @@ -384,7 +386,9 @@ detect_prio(struct config *conf, struct path * pp)
> return;
> if (get_asymmetric_access_state(pp->fd, ret, timeout) < 0)
> return;
> - prio_get(conf->multipath_dir, p, PRIO_ALUA, DEFAULT_PRIO_ARGS);
> + if (sysfs_get_asymmetric_access_state(pp, buff, 512) >= 0)
> + default_prio = PRIO_SYSFS;
> + prio_get(conf->multipath_dir, p, default_prio, DEFAULT_PRIO_ARGS);
> }
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 3/3] multipathd: Add 'sysfs' prioritizer
2016-11-08 18:52 ` Xose Vazquez Perez
@ 2016-11-09 6:49 ` Hannes Reinecke
2016-12-07 18:34 ` Xose Vazquez Perez
0 siblings, 1 reply; 8+ messages in thread
From: Hannes Reinecke @ 2016-11-09 6:49 UTC (permalink / raw)
To: Xose Vazquez Perez; +Cc: dm-devel
On 11/08/2016 07:52 PM, Xose Vazquez Perez wrote:
> On 07/15/2016 08:48 AM, Hannes Reinecke wrote:
>
>> Recent kernels have an 'access_state' attribute which allows
>> us to read the asymmetric access state directly from sysfs.
>
> Hi Hannes,
>
> with this patch it's impossible to select/autodetect ALUA.
> sysfs always takes precedence over alua.
>
> "detect_prio no" was added to overrides section, to make
> it work again.
>
> SLES 12-SP2
>
> Thank you.
>
But this was precisely the idea.
(After all, it says 'auto-detect', right?)
For ALUA-capable arrays we have a reliable priority detection with the
ALUA device-handler.
So it's far preferable to use the sysfs-provided information (as they
are populated by the ALUA device-handler); the ALUA prioritizer in
multipath-tools will be used as a fallback in case the device handler
isn't loaded or the sysfs files are not present.
Using the sysfs handler has the neat side effect that you don't need to
do I/O for detecting the priority, thereby eliminating one possible
cause for multipath being stuck during failover.
Cheers,
Hannes
--
Dr. Hannes Reinecke Teamlead Storage & Networking
hare@suse.de +49 911 74053 688
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton
HRB 21284 (AG Nürnberg)
--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 3/3] multipathd: Add 'sysfs' prioritizer
2016-11-09 6:49 ` Hannes Reinecke
@ 2016-12-07 18:34 ` Xose Vazquez Perez
0 siblings, 0 replies; 8+ messages in thread
From: Xose Vazquez Perez @ 2016-12-07 18:34 UTC (permalink / raw)
To: Hannes Reinecke; +Cc: dm-devel
On 11/09/2016 07:49 AM, Hannes Reinecke wrote:
> On 11/08/2016 07:52 PM, Xose Vazquez Perez wrote:
>> On 07/15/2016 08:48 AM, Hannes Reinecke wrote:
>>
>>> Recent kernels have an 'access_state' attribute which allows
>>> us to read the asymmetric access state directly from sysfs.
>>
>> Hi Hannes,
>>
>> with this patch it's impossible to select/autodetect ALUA.
>> sysfs always takes precedence over alua.
>>
>> "detect_prio no" was added to overrides section, to make
>> it work again.
>>
>> SLES 12-SP2
>>
>> Thank you.
>>
> But this was precisely the idea.
> (After all, it says 'auto-detect', right?)
>
> For ALUA-capable arrays we have a reliable priority detection with the ALUA device-handler.
> So it's far preferable to use the sysfs-provided information (as they are populated by the ALUA device-handler); the ALUA prioritizer in multipath-tools will be used as a fallback in case the device
> handler isn't loaded or the sysfs files are not present.
> Using the sysfs handler has the neat side effect that you don't need to do I/O for detecting the priority, thereby eliminating one possible cause for multipath being stuck during failover.
Thanks for the explanation.
As collateral effect, because the sysfs-handler output is too
brief, the asymmetric access state(aas) was lost:
Dec 07 19:26:51 | sda: prio = sysfs (detected setting)
Dec 07 19:26:51 | sda: sysfs prio = 50
----
Dec 07 19:26:29 | sdc: prio = alua (detected setting)
Dec 07 19:26:29 | reported target port group is 1 <----- lost
Dec 07 19:26:29 | aas = 80 [active/optimized] [preferred] <----- lost
Dec 07 19:26:29 | sdc: alua prio = 50
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2016-12-07 18:34 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-07-15 6:48 [PATCH 0/3] sysfs prioritizer Hannes Reinecke
2016-07-15 6:48 ` [PATCH 1/3] libmultipath: call get_vpd_uid() if no uid_attribute is set Hannes Reinecke
2016-07-15 6:48 ` [PATCH 2/3] alua prioritizer: Fix typo 'perf' Hannes Reinecke
2016-07-15 6:48 ` [PATCH 3/3] multipathd: Add 'sysfs' prioritizer Hannes Reinecke
2016-11-08 18:52 ` Xose Vazquez Perez
2016-11-09 6:49 ` Hannes Reinecke
2016-12-07 18:34 ` Xose Vazquez Perez
2016-07-22 9:44 ` [PATCH 0/3] sysfs prioritizer Christophe Varoqui
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).