git.annexia.org
/
libguestfs.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
2d5b0e7
)
Don't show empty CD devices (RHBZ#514505).
author
Richard Jones
<rjones@centos5x32.home.annexia.org>
Wed, 29 Jul 2009 14:02:16 +0000
(15:02 +0100)
committer
Richard Jones
<rjones@trick.home.annexia.org>
Wed, 29 Jul 2009 14:03:59 +0000
(15:03 +0100)
daemon/devsparts.c
patch
|
blob
|
history
diff --git
a/daemon/devsparts.c
b/daemon/devsparts.c
index
32d2fa8
..
a198ccd
100644
(file)
--- a/
daemon/devsparts.c
+++ b/
daemon/devsparts.c
@@
-37,6
+37,7
@@
do_list_devices (void)
DIR *dir;
struct dirent *d;
char buf[256];
DIR *dir;
struct dirent *d;
char buf[256];
+ int fd;
dir = opendir ("/sys/block");
if (!dir) {
dir = opendir ("/sys/block");
if (!dir) {
@@
-49,6
+50,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);
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 device to add a
+ * CD-ROM device even though we didn't request it. Try to
+ * detect this by seeing if the device contains media.
+ */
+ 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;
if (add_string (&r, &size, &alloc, buf) == -1) {
closedir (dir);
return NULL;
@@
-79,6
+92,7
@@
do_list_partitions (void)
DIR *dir, *dir2;
struct dirent *d;
char buf[256], devname[256];
DIR *dir, *dir2;
struct dirent *d;
char buf[256], devname[256];
+ int fd;
dir = opendir ("/sys/block");
if (!dir) {
dir = opendir ("/sys/block");
if (!dir) {
@@
-90,6
+104,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) {
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 device to add a
+ * CD-ROM device even though we didn't request it. Try to
+ * detect this by seeing if the device contains media.
+ */
+ 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';
strncpy (devname, d->d_name, sizeof devname);
devname[sizeof devname - 1] = '\0';