[libvirt/f20] Fix USB device descriptions (bz #1138887)

Cole Robinson crobinso at fedoraproject.org
Thu Oct 30 14:45:24 UTC 2014


commit 5849970686b3b117a0c4af146475a4c285b76539
Author: Cole Robinson <crobinso at redhat.com>
Date:   Thu Oct 30 10:45:29 2014 -0400

    Fix USB device descriptions (bz #1138887)

 ..._udev-Try-harder-to-get-human-readable-ve.patch |   75 ++++++++++++++++++++
 libvirt.spec                                       |   11 +++-
 2 files changed, 85 insertions(+), 1 deletions(-)
---
diff --git a/0001-node_device_udev-Try-harder-to-get-human-readable-ve.patch b/0001-node_device_udev-Try-harder-to-get-human-readable-ve.patch
new file mode 100644
index 0000000..a11773d
--- /dev/null
+++ b/0001-node_device_udev-Try-harder-to-get-human-readable-ve.patch
@@ -0,0 +1,75 @@
+From fb3f5f1b15ba389f47036417e599376d779b4c0b Mon Sep 17 00:00:00 2001
+Message-Id: <fb3f5f1b15ba389f47036417e599376d779b4c0b.1414679795.git.crobinso at redhat.com>
+From: Lubomir Rintel <lkundrak at v3.sk>
+Date: Tue, 9 Sep 2014 14:20:43 +0200
+Subject: [PATCH] node_device_udev: Try harder to get human readable
+ vendor:product
+
+The manufacurer and product from USB device itself are usually not particularly
+useful -- they tend to be missing, or ugly (all-uppercase, padded with spaces,
+etc.). Prefer what's in the usb id database and fall back to descriptors only
+if the device is too new to be in database.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1138887
+(cherry picked from commit 3ef77a544d4313cdfe257717708548f57e6db971)
+---
+ src/node_device/node_device_udev.c | 27 +++++++++++++++++++++------
+ 1 file changed, 21 insertions(+), 6 deletions(-)
+
+diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_device_udev.c
+index 785c2fa..a2f9e57 100644
+--- a/src/node_device/node_device_udev.c
++++ b/src/node_device/node_device_udev.c
+@@ -532,6 +532,7 @@ static int udevProcessUSBDevice(struct udev_device *device,
+ {
+     union _virNodeDevCapData *data = &def->caps->data;
+     int ret = -1;
++    int err;
+ 
+     if (udevGetUintProperty(device,
+                             "BUSNUM",
+@@ -554,10 +555,17 @@ static int udevProcessUSBDevice(struct udev_device *device,
+         goto out;
+     }
+ 
+-    if (udevGetStringSysfsAttr(device,
+-                              "manufacturer",
+-                              &data->usb_dev.vendor_name) == PROPERTY_ERROR) {
++    err = udevGetStringProperty(device,
++                                "ID_VENDOR_FROM_DATABASE",
++                                &data->usb_dev.vendor_name);
++    if (err == PROPERTY_ERROR)
+         goto out;
++    if (err == PROPERTY_MISSING) {
++        if (udevGetStringSysfsAttr(device,
++                                  "manufacturer",
++                                  &data->usb_dev.vendor_name) == PROPERTY_ERROR) {
++            goto out;
++        }
+     }
+ 
+     if (udevGetUintProperty(device,
+@@ -567,10 +575,17 @@ static int udevProcessUSBDevice(struct udev_device *device,
+         goto out;
+     }
+ 
+-    if (udevGetStringSysfsAttr(device,
+-                              "product",
+-                              &data->usb_dev.product_name) == PROPERTY_ERROR) {
++    err = udevGetStringProperty(device,
++                                "ID_MODEL_FROM_DATABASE",
++                                &data->usb_dev.product_name);
++    if (err == PROPERTY_ERROR)
+         goto out;
++    if (err == PROPERTY_MISSING) {
++        if (udevGetStringSysfsAttr(device,
++                                  "product",
++                                  &data->usb_dev.product_name) == PROPERTY_ERROR) {
++            goto out;
++        }
+     }
+ 
+     if (udevGenerateDeviceName(device, def, NULL) != 0) {
+-- 
+2.1.0
+
diff --git a/libvirt.spec b/libvirt.spec
index 9ba3b4f..3e1a902 100644
--- a/libvirt.spec
+++ b/libvirt.spec
@@ -367,7 +367,7 @@
 Summary: Library providing a simple virtualization API
 Name: libvirt
 Version: 1.1.3.6
-Release: 1%{?dist}%{?extra_release}
+Release: 2%{?dist}%{?extra_release}
 License: LGPLv2+
 Group: Development/Libraries
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
@@ -378,6 +378,9 @@ URL: http://libvirt.org/
 %endif
 Source: http://libvirt.org/sources/%{?mainturl}libvirt-%{version}.tar.gz
 
+# Fix USB device descriptions (bz #1138887)
+Patch0001: 0001-node_device_udev-Try-harder-to-get-human-readable-ve.patch
+
 %if %{with_libvirtd}
 Requires: libvirt-daemon = %{version}-%{release}
     %if %{with_network}
@@ -1161,6 +1164,9 @@ of recent versions of Linux (and other OSes).
 %prep
 %setup -q
 
+# Fix USB device descriptions (bz #1138887)
+%patch0001 -p1
+
 %build
 %if ! %{with_xen}
     %define _without_xen --without-xen
@@ -2118,6 +2124,9 @@ fi
 %endif
 
 %changelog
+* Thu Oct 30 2014 Cole Robinson <crobinso at redhat.com> - 1.1.3.6-2
+- Fix USB device descriptions (bz #1138887)
+
 * Mon Sep 08 2014 Cole Robinson <crobinso at redhat.com> - 1.1.3.6-1
 - Rebased to version 1.1.3.6
 - Fix memory leak in testDomainGenerateIfnames (bz 1135388)


More information about the scm-commits mailing list