Hello all,

I am trying to use a VHDx format disk on libvirt.

According to https://en.wikibooks.org/wiki/QEMU/Images, Qemu supports 
VHDx but not VHD.

But when I set disk format to 'vhdx' in virt-manager, it prompts "Error 
changing VM configuration: Expected a wrapped C Object but got <type 
'NoneType'>"

    Traceback (most recent call last):
       File "/usr/share/virt-manager/virtManager/addhardware.py", line
    765, in change_config_helper
         define_func(devobj=devobj, do_hotplug=False, **define_args)
       File "/usr/share/virt-manager/virtManager/domain.py", line 847,
    in define_disk
         self._redefine_xmlobj(xmlobj)
       File "/usr/share/virt-manager/virtManager/libvirtobject.py", line
    389, in _redefine_xmlobj
         self._define(newxml)
       File "/usr/share/virt-manager/virtManager/domain.py", line 1156,
    in _define
         self.conn.define_domain(newxml)
       File "/usr/share/virt-manager/virtManager/connection.py", line
    678, in define_domain
         return self._backend.defineXML(xml)
       File "/usr/lib/python2.7/dist-packages/libvirt.py", line 3622, in
    defineXML
         __tmp = virDomain(self,_obj=ret)
       File "/usr/lib/python2.7/dist-packages/libvirt.py", line 453, in
    __init__
         raise Exception("Expected a wrapped C Object but got %s" %
    type(_obj))
    Exception: Expected a wrapped C Object but got <type 'NoneType'>

Then I use `virsh edit MyDOM` to edit my domain XML, change disk format 
to "vhdx" then I get error:

"Unable to validate doc against /usr/share/libvirt/schemas/domain.rng".

So I edit /usr/share/libvirt/schemas/storagecommon.rng, change 
"<value>vhd</value>" to "<value>vhdx</value>" in  <define 
name='storageFormat'>. But it still not works, and virsh tells me 
`error: unsupported configuration: unknown driver format value 'vhdx' `. 
I choice ignore , but then same error and I can't ignore: only Yes to 
re-edit or No to give up.

Then I suppose "vhd" in libvirt means "vhdx", so I change disk format to 
"vhd". But then when I run domain, Qemu get error: " Unknown driver 
'vhd' ". It seems libvirt pass "vhd" to Qemu, but Qemu only support "vhdx"

At last, I use Qemu paramaters: ` -drive 
file=/Path/To/File.vhdx,format=vhdx,if=none,id=drive-sata0-0-3 `, and it 
works. When I use `-drive format=vhd` , Qemu gives me same error: " 
Unknown driver 'vhd' ".

So I think it maybe a bug that libvirt forcely demand format is "vhd" 
and I find no way to change it, but in same time Qemu only accept format 
"vhdx" as paramater. I try to edit 
`/usr/lib/python2.7/dist-packages/libvirt.py` but I have no idea how to 
modify it. And it seems only changing of storagecommon.rng is not enough.

My libvirt version is 3.6.0 and Qemu version is 2.8.1.

Regards,

Mitori


--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to