During booting udev might not be fully initialized, causing
it to not return any information for a path.
The multipath map, however, would still be present.
In these cases we should use the multipath map as the
path wwid to avoid spurious path failures during boot.
The situation will be corrected anyway as udev will
be sending out the 'real' events very soon after.

Signed-off-by: Hannes Reinecke <h...@suse.de>
---
 libmultipath/dmparser.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/libmultipath/dmparser.c b/libmultipath/dmparser.c
index 2209b2d..c19c5d2 100644
--- a/libmultipath/dmparser.c
+++ b/libmultipath/dmparser.c
@@ -336,10 +336,16 @@ disassemble_map (vector pathvec, char * params, struct 
multipath * mpp)
                                        goto out1;
 
                                strncpy(pp->dev_t, word, BLK_DEV_SIZE);
-
+                               if (strlen(mpp->wwid)) {
+                                       strncpy(pp->wwid, mpp->wwid, WWID_SIZE);
+                               }
                                /* Only call this in multipath client mode */
                                if (!conf->daemon && store_path(pathvec, pp))
                                        goto out1;
+                       } else {
+                               if (!strlen(pp->wwid) &&
+                                   strlen(mpp->wwid))
+                                       strncpy(pp->wwid, mpp->wwid, WWID_SIZE);
                        }
                        FREE(word);
 
-- 
2.6.6

--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel

Reply via email to