From 2bfeaeaa308adf27853c1ec6d1d958a3e4734b8e Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Tue, 16 Nov 2010 15:56:11 +0000 Subject: [PATCH] daemon: findfs-uuid and findfs-label should not return /dev/mapper paths. --- daemon/findfs.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/daemon/findfs.c b/daemon/findfs.c index 0520f18..061ab0a 100644 --- a/daemon/findfs.c +++ b/daemon/findfs.c @@ -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 */ } -- 1.8.3.1