/* libguestfs - the guestfsd daemon
- * Copyright (C) 2009 Red Hat Inc.
+ * Copyright (C) 2009 Red Hat Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
while ((d = readdir (dir)) != NULL) {
if (strncmp (d->d_name, "sd", 2) == 0 ||
- strncmp (d->d_name, "hd", 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);
+
if (add_string (&r, &size, &alloc, buf) == -1) {
closedir (dir);
return NULL;
while ((d = readdir (dir)) != NULL) {
if (strncmp (d->d_name, "sd", 2) == 0 ||
- strncmp (d->d_name, "hd", 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';