[libvirt] [PATCH] Don't use %.3d format for bus/addr of USB devices.

When using 0-prefixed numbers, QEmu will interpret them as octal numbers (as C convention says); this means that if you attach a device that has addr > 10 (decimal) you're going to attach a different device. --- src/qemu/qemu_conf.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index 00e89a1..5bd3d4c 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -3266,7 +3266,7 @@ qemuBuildUSBHostdevDevStr(virDomainHostdevDefPtr dev) return NULL; } - if (virAsprintf(&ret, "usb-host,hostbus=%.3d,hostaddr=%.3d,id=%s", + if (virAsprintf(&ret, "usb-host,hostbus=%d,hostaddr=%d,id=%s", dev->source.subsys.u.usb.bus, dev->source.subsys.u.usb.device, dev->info.alias) < 0) @@ -3288,7 +3288,7 @@ qemuBuildUSBHostdevUsbDevStr(virDomainHostdevDefPtr dev) return NULL; } - if (virAsprintf(&ret, "host:%.3d.%.3d", + if (virAsprintf(&ret, "host:%d.%d", dev->source.subsys.u.usb.bus, dev->source.subsys.u.usb.device) < 0) virReportOOMError(); -- 1.7.3.2

On 10/26/2010 06:45 AM, Diego Elio Pettenò wrote:
When using 0-prefixed numbers, QEmu will interpret them as octal numbers (as C convention says); this means that if you attach a device that has addr> 10 (decimal) you're going to attach a different device. --- src/qemu/qemu_conf.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
Missing a testsuite adjustment. ACK to the concept, and applied after squashing in this: diff --git i/tests/qemuxml2argvdata/qemuxml2argv-hostdev-usb-address-device.args w/tests/qemuxml2argvdata/qemuxml2argv-hostdev-usb-address-device.args index 6900fd3..7e42542 100644 --- i/tests/qemuxml2argvdata/qemuxml2argv-hostdev-usb-address-device.args +++ w/tests/qemuxml2argvdata/qemuxml2argv-hostdev-usb-address-device.args @@ -1 +1 @@ -LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M pc -m 214 -smp 1 -nographic -nodefconfig -nodefaults -monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -usb -device usb-host,hostbus=014,hostaddr=006,id=hostdev0 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x2 +LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M pc -m 214 -smp 1 -nographic -nodefconfig -nodefaults -monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -usb -device usb-host,hostbus=14,hostaddr=6,id=hostdev0 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x2 diff --git i/tests/qemuxml2argvdata/qemuxml2argv-hostdev-usb-address.args w/tests/qemuxml2argvdata/qemuxml2argv-hostdev-usb-address.args index e57bec1..96e004d 100644 --- i/tests/qemuxml2argvdata/qemuxml2argv-hostdev-usb-address.args +++ w/tests/qemuxml2argvdata/qemuxml2argv-hostdev-usb-address.args @@ -1 +1 @@ -LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M pc -m 214 -smp 1 -nographic -monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -serial none -parallel none -usb -usbdevice host:014.006 +LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M pc -m 214 -smp 1 -nographic -monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -serial none -parallel none -usb -usbdevice host:14.6 -- Eric Blake eblake@redhat.com +1-801-349-2682 Libvirt virtualization library http://libvirt.org
participants (2)
-
Diego Elio Pettenò
-
Eric Blake