X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=daemon%2Fmount.c;h=ccace75e5b53cf43f865678ff76ceff5bd636c24;hb=6cdd349e6964636c2b7ae71453dca33716dda486;hp=8927c6c207462bad2ac57c5270281cefc2514436;hpb=5922d7084d6b43f0a1a15b664c7082dfeaf584d0;p=libguestfs.git diff --git a/daemon/mount.c b/daemon/mount.c index 8927c6c..ccace75 100644 --- a/daemon/mount.c +++ b/daemon/mount.c @@ -149,6 +149,7 @@ mounts_or_mountpoints (int mp) char *p, *pend, *p2; int len; char matching[5 + sysroot_len]; + size_t i; r = command (&out, &err, "mount", NULL); if (r == -1) { @@ -204,6 +205,26 @@ mounts_or_mountpoints (int mp) if (add_string (&ret, &size, &alloc, NULL) == -1) return NULL; + /* Convert /dev/mapper LV paths into canonical paths (RHBZ#646432). */ + for (i = 0; ret[i] != NULL; i += mp ? 2 : 1) { + if (STRPREFIX (ret[i], "/dev/mapper/") || STRPREFIX (ret[i], "/dev/dm-")) { + char *canonical; + r = lv_canonical (ret[i], &canonical); + if (r == -1) { + free_strings (ret); + return NULL; + } + if (r == 1) { + free (ret[i]); + ret[i] = canonical; + } + /* Ignore the case where r == 0. This might happen where + * eg. a LUKS /dev/mapper device is mounted, but that won't + * correspond to any LV. + */ + } + } + return ret; }