Hide Forgot
Created attachment 512831 [details] libvirtd.log Description of problem: When creating domains on libvirt-0.9.3-2 and downgrading libvirt to 0.9.2-1- the domains are not tracked. [root@camel-vdsb ~]# rpm -qa | grep libvirt libvirt-0.9.3-2.el6.x86_64 [root@camel-vdsb ~]# virsh create /tmp/david [root@camel-vdsb ~]# virsh -r list Id Name State ---------------------------------- 2 david running [root@camel-vdsb ~]# ps -ww `pgrep qemu` PID TTY STAT TIME COMMAND 24512 ? Sl 0:50 /usr/libexec/qemu-kvm -S -M rhel6.2.0 -cpu qemu64,-svm -enable-kvm -m 256 -smp 1,sockets=1,cores=1,threads=1 -name david -uuid 9ffe28b6-6134-4b1e-8804-1185f49c436f -smbios type=1,manufacturer=Red Hat,product=RHEL,version=6Server-6.1.0.2.el6_1,serial=6A7E2852-C2CC-11DE-9297-00215E993FDC_00:21:5E:99:3F:DC,uuid=9ffe28b6-6134-4b1e-8804-1185f49c436f -nodefconfig -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/david.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=2011-07-14T07:59:51 -no-shutdown -device virtio-serial-pci,id=virtio-serial0,max_ports=16,bus=pci.0,addr=0x4 -drive if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 -netdev tap,fd=30,id=hostnet0,vhost=on,vhostfd=31 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=aa:bb:dd:dd:aa:bb,bus=pci.0,addr=0x3 -chardev socket,id=charchannel0,path=/var/lib/libvirt/qemu/channels/david.com.redhat.rhevm.vdsm,server,nowait -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=com.redhat.rhevm.vdsm -usb -vnc 0:0 -vga cirrus [root@camel-vdsb ~]# yum downgrade libvirt* [root@camel-vdsb ~]# rpm -q libvirt libvirt-0.9.2-1.el6.x86_64 [root@camel-vdsb ~]# virsh -r list Id Name State ---------------------------------- [root@camel-vdsb ~]# ps -ww `pgrep qemu` PID TTY STAT TIME COMMAND 24512 ? Sl 1:03 /usr/libexec/qemu-kvm -S -M rhel6.2.0 -cpu qemu64,-svm -enable-kvm -m 256 -smp 1,sockets=1,cores=1,threads=1 -name david -uuid 9ffe28b6-6134-4b1e-8804-1185f49c436f -smbios type=1,manufacturer=Red Hat,product=RHEL,version=6Server-6.1.0.2.el6_1,serial=6A7E2852-C2CC-11DE-9297-00215E993FDC_00:21:5E:99:3F:DC,uuid=9ffe28b6-6134-4b1e-8804-1185f49c436f -nodefconfig -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/david.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=2011-07-14T07:59:51 -no-shutdown -device virtio-serial-pci,id=virtio-serial0,max_ports=16,bus=pci.0,addr=0x4 -drive if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 -netdev tap,fd=30,id=hostnet0,vhost=on,vhostfd=31 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=aa:bb:dd:dd:aa:bb,bus=pci.0,addr=0x3 -chardev socket,id=charchannel0,path=/var/lib/libvirt/qemu/channels/david.com.redhat.rhevm.vdsm,server,nowait -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=com.redhat.rhevm.vdsm -usb -vnc 0:0 -vga cirrus after jirka Version-Release number of selected component (if applicable): tested on 0.9.3-2 to 0.9.2-1 How reproducible: 100% Steps to Reproduce: 1.create domain 2.downgrade libvirt Actual results: the domains created on the new libvirt are not tracked after downgrading libvirt to the previous version Expected results: Additional info: libvirtd logs attached + the domain xml.
Created attachment 512833 [details] domxml
The problem is that libvirt 0.9.3 saved <flag name='virtio-blk-pci.ioeventfd'/> as one of the qemu capabilities. The older libvirt doesn't know what it means and fails to parse the status XML and ignores the domain. This is a general problem of downgrading libvirt that stores qemu capabilities in domain status XML. However, I'm not sure we can just ignore unknown capabilities since that could have unforeseen consequences. On the other hand, to allow downgrading from future libvirt to current, we could probably allow loading such domains in the degraded mode, that is libvirt would refuse talking to qemu monitor in the same way it does so when seeing a monitor error. That way, user could at least see the domain.
Created attachment 512836 [details] domain's status XML
Downgrading of libvirt is completely unsupported if you have any existing guests defined, whether running or not, because features introduced by the new libvirt will not be understood by the old libvirt. As well forgetting running guests, it may well also refuse to load an inactive guests.