Red Hat Bugzilla – Bug 801970
libvirt with QEmu does not support disk filenames with comma
Last modified: 2012-06-20 02:49:54 EDT
Cloning to RHEL +++ This bug was initially created as a clone of Bug #801036 +++ There's no way to specify a disk filename with comma on libvirt with QEmu. QEmu supports filenames with comma by using a double comma (e.g. "file=virtual,,disk.img" is parsed by QEmu as the file virtual,disk.img). However this does not happen with libvirt. If you specify <source file="virtual,disk.img" />, libvirt will pass the exact name to QEmu, which is an error to QEmu; if you specify <source file="virtual,,disk.img" />, libvirt interprets as a literal name and reports a "no such file" error even before talking to QEmu. Tested on libvirt-0.8.7-18.el6_1.4.x86_64. How reproducible: Always. Steps to Reproduce: 1. Create an image file with a comma in the name (e.g. virtual,disk.img). 2. Create a QEmu VM with libvirt specifying that file as the disk. 3. Start the VM. Actual results: The file cannot be found. Expected results: The file should be found because it exists and QEmu supports that. --- Additional comment from dallan@redhat.com on 2012-03-07 09:28:44 MST --- TBH, this capability isn't something that I've seen a lot of people asking for, but if you need it and are willing to put together a patch, I doubt it would be controversial upstream, and the code probably isn't too complex. Is that something that you'd be willing to take on? --- Additional comment from vianac@linux.vnet.ibm.com on 2012-03-07 10:22:11 MST --- Yes, I'll work on a patch for it. --- Additional comment from dallan@redhat.com on 2012-03-07 10:55:58 MST --- Great, thank you. If you haven't already, have a look at http://libvirt.org/hacking.html as there is some good advice there that can potentially save you a lot of time/work. --- Additional comment from bugproxy@us.ibm.com on 2012-03-07 12:31:04 MST --- ------- Comment From sglass@us.ibm.com 2012-03-07 14:21 EDT------- ---Problem Description--- QEmu supports filenames with comma by using a double comma (e.g. "file=virtual,,disk.img" is parsed by QEmu as the file virtual,disk.img). However this does not happen with libvirt. If you specify <source file="virtual,disk.img" />, libvirt will pass the exact name to QEmu, which is an error to QEmu; if you specify <source file="virtual,,disk.img" />, libvirt interprets as a literal name and reports a "no such file" error even before talking to QEmu. Contact Information = Anthony Liguori ---uname output--- n/a Machine Type = n/a ---Debugger--- A debugger is not configured ---KVM Component Data--- --- Additional comment from eblake@redhat.com on 2012-03-09 17:43:19 MST --- Upstream patch awaiting review: https://www.redhat.com/archives/libvir-list/2012-March/msg00420.html
In POST: http://post-office.corp.redhat.com/archives/rhvirt-patches/2012-March/msg01134.html
Verify pass on kernel-2.6.32-250.el6.x86_64 qemu-kvm-0.12.1.2-2.246.el6.x86_64 libvirt-0.9.10-5.el6.x86_64 Start a guest with <disk type='file' device='disk'> <driver name='qemu' type='raw' cache='none'/> <source file='/var/lib/libvirt/images/tt,tt.img'/> <target dev='hda' bus='ide'/> <address type='drive' controller='0' bus='0' target='0' unit='0'/> </disk> Domain started without error qemu-kvm command -drive file=/var/lib/libvirt/images/tt,,tt.img,if=none,id=drive-ide0-0-0,format=raw,cache=none Can reproduce on libvirt-0.9.10-4.el6.x86_64 Start guest will report error error: Failed to start domain guest error: internal error process exited while connecting to monitor: qemu-kvm: -drive file=/var/lib/libvirt/images/tt,tt.img,if=none,id=drive-ide0-0-0,format=raw,cache=none: Invalid parameter 'tt.img
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. http://rhn.redhat.com/errata/RHSA-2012-0748.html