Hi Eric,

Thanks!
You are right, I missed declaring namespace, now, the <qemu:commandline> is saved after virsh edit. 
However, both namespace and  <qemu:commandline> tag are lost after I run "nova start" to launch the VM.
Any idea that how could I make this qemu command take effect ?

Regards,
CY.

On Mon, Apr 20, 2015 at 11:41 PM, Eric Blake <eblake@redhat.com> wrote:
On 04/20/2015 08:37 AM, Chengyuan Li wrote:
> Hi,
>
> I tried to enable virtio-blk data plane feature for VMs in my openstack
> environment,  the hypervisor is ubuntu 14.04, libvirt 1.2.2 and QEMU 2.0.
> As nova doesn't support that parameter yet, I did belows
>
> 1. nova boot a VM with raw disk image.
> 2. nova stop the VM.
> 3. run "virsh edit <instance-id>" on the hyprvisor node, and adding below
> into instance xml just before </domain>.
>
> However, the <qemu:commandline> part is ignored and not saved after closing
> virsh edit, seems that libvirt rejected these changes. Is there any XML
> syntax error here? Or libvirt doesn't support <qemu:commandline> tag?

If XML changes disappear after virsh edit, then it is a case of you
using XML that wasn't recognized by libvirt.

>
> <qemu:commandline>
>     <qemu:arg value='-set'/>
>     <qemu:arg value='device.drive-virtio-disk0.x-data-plane=on'/>
> </qemu:commandline>

Did you also remember to declare the namespace? Per
http://libvirt.org/drvqemu.html#qemucommand

it is essential to have something like:

<domain type='qemu' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>

before any other <qemu:...> will be recognized.  (The namespace does not
have to be named 'qemu:', but it makes it easier to stick to the naming
used by the examples)

--
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org