X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=daemon%2Fdevsparts.c;h=33579ba517d534a40dee53eb64f38ad5a426be6e;hb=8aa10e0bd024eed36f15a7e1fbe889e374425e09;hp=32d2fa82cfc8d7025dca3bde065367ec10645b54;hpb=a7b73d4a1e09f12b2002083618056f0c823c1dcf;p=libguestfs.git diff --git a/daemon/devsparts.c b/daemon/devsparts.c index 32d2fa8..33579ba 100644 --- a/daemon/devsparts.c +++ b/daemon/devsparts.c @@ -49,6 +49,18 @@ do_list_devices (void) strncmp (d->d_name, "hd", 2) == 0 || strncmp (d->d_name, "vd", 2) == 0) { snprintf (buf, sizeof buf, "/dev/%s", d->d_name); + + /* RHBZ#514505: Some versions of qemu <= 0.10 add a + * CD-ROM device even though we didn't request it. Try to + * detect this by seeing if the device contains media. + */ + int fd = open (buf, O_RDONLY); + if (fd == -1) { + perror (buf); + continue; + } + close (fd); + if (add_string (&r, &size, &alloc, buf) == -1) { closedir (dir); return NULL; @@ -90,6 +102,19 @@ do_list_partitions (void) if (strncmp (d->d_name, "sd", 2) == 0 || strncmp (d->d_name, "hd", 2) == 0 || strncmp (d->d_name, "vd", 2) == 0) { + snprintf (buf, sizeof buf, "/dev/%s", d->d_name); + + /* RHBZ#514505: Some versions of qemu <= 0.10 add a + * CD-ROM device even though we didn't request it. Try to + * detect this by seeing if the device contains media. + */ + int fd = open (buf, O_RDONLY); + if (fd == -1) { + perror (buf); + continue; + } + close (fd); + strncpy (devname, d->d_name, sizeof devname); devname[sizeof devname - 1] = '\0';