[dm-devel] [PATCH] libmultipath: Fix information not shown when first path is down.
Gabriel Krisman Bertazi
krisman at linux.vnet.ibm.com
Mon Oct 5 20:19:17 UTC 2015
vendor_id and product_id information are not shown when displaying
multipath topology if the first path is down.
0QEMU_QEMU_HARDDISK_HELLOWORLD dm-0 , <--- Missing vendor and product
size=10G features='0' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=0 status=active
| `- #:#:#:# - #:# active undef running
`-+- policy='service-time 0' prio=0 status=enabled
`- 2:0:1:0 sdd 8:48 active undef running
This happens because we only look at the first_path when printing the
topology. This patch looks at every slot in the path vector until we
find one with the correct value.
Signed-off-by: Gabriel Krisman Bertazi <krisman at linux.vnet.ibm.com>
---
libmultipath/print.c | 19 ++++++++++++++-----
1 file changed, 14 insertions(+), 5 deletions(-)
diff --git a/libmultipath/print.c b/libmultipath/print.c
index 6594fee..fb2551e 100644
--- a/libmultipath/print.c
+++ b/libmultipath/print.c
@@ -248,11 +248,20 @@ snprint_multipath_uuid (char * buff, size_t len, struct multipath * mpp)
static int
snprint_multipath_vpr (char * buff, size_t len, struct multipath * mpp)
{
- struct path * pp = first_path(mpp);
- if (!pp)
- return 0;
- return snprintf(buff, len, "%s,%s",
- pp->vendor_id, pp->product_id);
+ struct pathgroup * pgp;
+ struct path * pp;
+ int i, j;
+
+ vector_foreach_slot(mpp->pg, pgp, i) {
+ if (!pgp)
+ continue;
+ vector_foreach_slot(pgp->paths, pp, j) {
+ if (strlen(pp->vendor_id) && strlen(pp->product_id))
+ return snprintf(buff, len, "%s,%s",
+ pp->vendor_id, pp->product_id);
+ }
+ }
+ return snprintf(buff, len, "##,##");
}
static int
--
2.1.0
More information about the dm-devel
mailing list