daemon: findfs-uuid and findfs-label should not return /dev/mapper paths.
authorRichard W.M. Jones <rjones@redhat.com>
Tue, 16 Nov 2010 15:56:11 +0000 (15:56 +0000)
committerRichard W.M. Jones <rjones@redhat.com>
Thu, 18 Nov 2010 11:58:49 +0000 (11:58 +0000)
(cherry picked from commit 2bfeaeaa308adf27853c1ec6d1d958a3e4734b8e)

daemon/findfs.c

index 0520f18..061ab0a 100644 (file)
@@ -56,6 +56,22 @@ findfs (const char *tag, const char *label_or_uuid)
   if (len > 0 && out[len-1] == '\n')
     out[len-1] = '\0';
 
+  if (STRPREFIX (out, "/dev/mapper/") || STRPREFIX (out, "/dev/dm-")) {
+    char *canonical;
+    r = lv_canonical (out, &canonical);
+    if (r == -1) {
+      free (out);
+      return NULL;
+    }
+    if (r == 1) {
+      free (out);
+      out = canonical;
+    }
+    /* Ignore the case where r == 0.  /dev/mapper does not correspond
+     * to an LV, so the best we can do is just return it as-is.
+     */
+  }
+
   return out;                   /* caller frees */
 }