Google Summer of Code 2010/QMP: Difference between revisions

From QEMU
No edit summary
Line 18: Line 18:
! Handler
! Handler
! Status
! Status
! Who I should CC
|-
|-
| [[#do_info_netdevices|do_info_netdevices]]
| [[#do_info_netdevices|do_info_netdevices]]
| Got mentor's review.
| Got mentor's review.
| Markus Armbruster <armbru@redhat.com>
|-
|-
| [[#do_savevm/do_loadvm|do_savevm/do_loadvm]]
| [[#do_savevm/do_loadvm|do_savevm/do_loadvm]]
| Coding.
| Coding.
| Kevin Wolf <kwolf@redhat.com>, Juan Quintela <quintela@redhat.com>, Christoph Hellwig <hch@infradead.org>
|-
|-
| do_info_qdm
| do_info_qdm
| Need to confirm libvirt's needs/priority about this.
| Need to confirm libvirt's needs/priority about this.
|
|}
|}


Line 33: Line 37:
* Fix latest mentor's review
* Fix latest mentor's review
* Document do_info_netdevices and send it to qemu-devel as '[RFC] QMP: new query-netdevices command'
* Document do_info_netdevices and send it to qemu-devel as '[RFC] QMP: new query-netdevices command'
==== May 27 ====
Got mentor's review. Will begin fixing things after finishing some more do_savevm/do_loadvm work.
==== From late March thru May 18 ====
Sent patch v4 to qemu-devel.
We were struggling to get the output of 'info network' exactly the same and juggling to work around the lack of a pattern when formatting VLANClientState.info_str. So we decided to add a new and clean command, and leave 'info network' as it is.
This is the latest patch:
http://lists.gnu.org/archive/html/qemu-devel/2010-05/msg01567.html
The work on this area has begun late March, as a test if I could do something in GSoC. And here I am :-D There were a lot of interactions before the v4 patch.
Previous attempts:
* First try on 2010-04-03: http://www.mail-archive.com/qemu-devel@nongnu.org/msg28815.html
* Second try on 2010-04-08: http://www.mail-archive.com/qemu-devel@nongnu.org/msg29202.html
* Third try on 2010-04-15: http://www.mail-archive.com/qemu-devel@nongnu.org/msg29768.html


=== do_savevm/do_loadvm ===  
=== do_savevm/do_loadvm ===  
TODO:
TODO:
* Fix suggestions from kwolf.
* bdrv_can_snapshot() does not catch RAW images as an unsupported device.
* bdrv_can_snapshot() does not catch RAW images as an unsupported device.
* Verify snapshot capabilities of all devices in do_savevm() before trying to save anything at all.
* Update do_loadvm() do load an snapshot using an UUID.
* Update do_loadvm() do load an snapshot using an UUID.
* Update do_delvm() do delete an snapshot using an UUID.
* Update do_delvm() do delete an snapshot using an UUID.


==== May 27 ====
== Day by Day ==
 
=== May 28 ===
* Some chat with mentor.
 
* I've submitted a patch to qemu-devel that verifies the snapshot capabilities of all devices in do_savevm() before trying to save anything at all. More details: http://www.mail-archive.com/qemu-devel@nongnu.org/msg33751.html
 
=== May 27 ===
* Got mentor's review about last do_info_netdevices(). Will begin fixing things after finishing some more do_savevm/do_loadvm work.
* do_info_snapshots() now displays snapshot information of all devices.
* do_info_snapshots() now displays snapshot information of all devices.
  qemu -hda ../a.qcow2 -hdb ../b.qcow2
  qemu -hda ../a.qcow2 -hdb ../b.qcow2
Line 80: Line 71:
  3                    0 2010-05-27 11:53:40  00:00:12.867 c5a75fd0-2cea-433b-bd21-37025dff3cbd 9e471508-f9d9-46d6-815b-2c25b15152f3
  3                    0 2010-05-27 11:53:40  00:00:12.867 c5a75fd0-2cea-433b-bd21-37025dff3cbd 9e471508-f9d9-46d6-815b-2c25b15152f3


==== May 26 ====
=== May 26 ===
* Got parent snapshot saving working. Using global variable, not sure if it is best option.
* Got parent snapshot saving working. Using global variable, not sure if it is best option.
* Updated bdrv_snapshot_dump() to properly show the UUID information. It looks really big.
* Updated bdrv_snapshot_dump() to properly show the UUID information. It looks really big.
Line 97: Line 88:
* Fixed extra_data_size offset handling when loading a qcow2 image with an empty extra area.
* Fixed extra_data_size offset handling when loading a qcow2 image with an empty extra area.
   
   
==== May 22 ====
=== May 22 ===
I was actually not saving anything. After closing the VM the UUID information was not written to disk. After hours pulling some hair I figured it as a typo and a wrong offset calculation when saving the QCowSnapshotHeader to disk.
I was actually not saving anything. After closing the VM the UUID information was not written to disk. After hours pulling some hair I figured it as a typo and a wrong offset calculation when saving the QCowSnapshotHeader to disk.


==== May 21 ====
=== May 21 ===
Got saving UUID information in a qcow2 file, using QCowSnapshot->extra_data_size and displaying it on 'info snapshots'. It seams we can have snapshot inheritance without breaking the file format or any old code. Now time to actually save the inheritance.
* Got saving UUID information in a qcow2 file, using QCowSnapshot->extra_data_size and displaying it on 'info snapshots'. It seams we can have snapshot inheritance without breaking the file format or any old code. Now time to actually save the inheritance.


Helpful references:
Helpful references:
* http://people.gnome.org/~markmc/qcow-image-format.html
* http://people.gnome.org/~markmc/qcow-image-format.html
* http://www.mail-archive.com/qemu-devel@nongnu.org/msg11663.html
* http://www.mail-archive.com/qemu-devel@nongnu.org/msg11663.html


==== May 19 ====
=== May 19 ===
After talking with Chris Lalancette from libvirt, we need snapshot inheritance in qemu, before converting do_savevm/do_loadvm to QMP. I've analyzed the code and I there is some hairy things to do. There are more people working on this code, so I will try to get a go before starting coding.
After talking with Chris Lalancette from libvirt, we need snapshot inheritance in qemu, before converting do_savevm/do_loadvm to QMP. I've analyzed the code and I there is some hairy things to do. There are more people working on this code, so I will try to get a go before starting coding.


== Source code ==
=== From late March thru May 18 ===
Sent patch v4 to qemu-devel.
 
We were struggling to get the output of 'info network' exactly the same and juggling to work around the lack of a pattern when formatting VLANClientState.info_str. So we decided to add a new and clean command, and leave 'info network' as it is.
 
This is the v4 patch:
 
http://lists.gnu.org/archive/html/qemu-devel/2010-05/msg01567.html


The working being done can be followed here:
The work on this area has begun late March, as a test if I could do something in GSoC. And here I am :-D There were a lot of interactions before the v4 patch.


http://github.com/miguelzinho/qemu-soc
Previous attempts:
* First try on 2010-04-03: http://www.mail-archive.com/qemu-devel@nongnu.org/msg28815.html
* Second try on 2010-04-08: http://www.mail-archive.com/qemu-devel@nongnu.org/msg29202.html
* Third try on 2010-04-15: http://www.mail-archive.com/qemu-devel@nongnu.org/msg29768.html

Revision as of 20:19, 28 May 2010

Summary

qemu has many commands attached to the monitor interface that are currently inaccessible over QMP (QEMU Machine Protocol). I intend to give continuity to this effort, converting the remaining functions to the QObject API. While doing this conversion, the QObject API can be updated to improve its functionality when required.

More details about the protocol: http://www.linux-kvm.org/page/MonitorProtocol

Team

Student

Mentor

Subsystems being worked on

Handler Status Who I should CC
do_info_netdevices Got mentor's review. Markus Armbruster <armbru@redhat.com>
do_savevm/do_loadvm Coding. Kevin Wolf <kwolf@redhat.com>, Juan Quintela <quintela@redhat.com>, Christoph Hellwig <hch@infradead.org>
do_info_qdm Need to confirm libvirt's needs/priority about this.

do_info_netdevices

TODO:

  • Fix latest mentor's review
  • Document do_info_netdevices and send it to qemu-devel as '[RFC] QMP: new query-netdevices command'

do_savevm/do_loadvm

TODO:

  • Fix suggestions from kwolf.
  • bdrv_can_snapshot() does not catch RAW images as an unsupported device.
  • Update do_loadvm() do load an snapshot using an UUID.
  • Update do_delvm() do delete an snapshot using an UUID.

Day by Day

May 28

  • Some chat with mentor.

May 27

  • Got mentor's review about last do_info_netdevices(). Will begin fixing things after finishing some more do_savevm/do_loadvm work.
  • do_info_snapshots() now displays snapshot information of all devices.
qemu -hda ../a.qcow2 -hdb ../b.qcow2
QEMU 0.12.50 monitor - type 'help' for more information
(qemu) info snapshots 
Snapshot list from ide0-hd0:
ID   TAG       VM SIZE                DATE       VM CLOCK                                 UUID                          PARENT UUID
1                 1.5M 2010-05-27 12:24:45   00:00:05.640 f89787ea-c39e-4531-90cc-19d73abbc50e 00000000-0000-0000-0000-000000000000
2                 1.5M 2010-05-27 12:24:52   00:00:12.258 4fb1f028-febb-464a-8e61-8abdfde9adc8 f89787ea-c39e-4531-90cc-19d73abbc50e
3                  1.5M 2010-05-27 12:25:05   00:00:24.921 faeb873c-f3fd-40ab-97de-67c6f12fd5ff 4fb1f028-febb-464a-8e61-8abdfde9adc8

Snapshot list from ide0-hd1:
ID   TAG       VM SIZE                DATE       VM CLOCK                                 UUID                          PARENT UUID
1                    0 2010-05-27 11:33:11   00:00:02.781 8f5d24a0-9a92-4650-8b56-babaa7790700 00000000-0000-0000-0000-000000000000
2                    0 2010-05-27 11:53:39   00:00:12.073 9e471508-f9d9-46d6-815b-2c25b15152f3 00000000-0000-0000-0000-000000000000
3                    0 2010-05-27 11:53:40   00:00:12.867 c5a75fd0-2cea-433b-bd21-37025dff3cbd 9e471508-f9d9-46d6-815b-2c25b15152f3

May 26

  • Got parent snapshot saving working. Using global variable, not sure if it is best option.
  • Updated bdrv_snapshot_dump() to properly show the UUID information. It looks really big.
QEMU 0.12.50 monitor - type 'help' for more information
(qemu) info snapshots 
Snapshot devices: ide0-hd0
Snapshot list (from ide0-hd0):
ID   TAG       VM SIZE                DATE       VM CLOCK                                 UUID                          PARENT UUID
1                 1.5M 2010-05-26 21:51:02   00:00:03.263 ce7cb390-f5d8-4633-9c83-e2c651d5aecf 00000000-0000-0000-0000-000000000000
2                 1.5M 2010-05-26 21:51:09   00:00:08.844 1f80df59-470e-4de6-a0a1-cf6a2a721e0e ce7cb390-f5d8-4633-9c83-e2c651d5aecf
3                 1.5M 2010-05-26 21:51:24   00:00:23.274 63ce278d-26fe-4790-ab13-6643bf9ddf90 1f80df59-470e-4de6-a0a1-cf6a2a721e0e
4                 1.5M 2010-05-26 21:53:17   00:00:03.595 0199cdd9-1c8f-4c53-b711-684110078960 00000000-0000-0000-0000-000000000000
5                 1.5M 2010-05-26 21:53:25   00:00:10.750 6b753c35-8939-477b-a7f5-10ff45e34e93 0199cdd9-1c8f-4c53-b711-684110078960
6                 1.5M 2010-05-26 21:53:27   00:00:12.071 7a127832-7259-4b41-9400-64804b755b0c 6b753c35-8939-477b-a7f5-10ff45e34e93

  • Fixed extra_data_size offset handling when loading a qcow2 image with an empty extra area.

May 22

I was actually not saving anything. After closing the VM the UUID information was not written to disk. After hours pulling some hair I figured it as a typo and a wrong offset calculation when saving the QCowSnapshotHeader to disk.

May 21

  • Got saving UUID information in a qcow2 file, using QCowSnapshot->extra_data_size and displaying it on 'info snapshots'. It seams we can have snapshot inheritance without breaking the file format or any old code. Now time to actually save the inheritance.

Helpful references:

May 19

After talking with Chris Lalancette from libvirt, we need snapshot inheritance in qemu, before converting do_savevm/do_loadvm to QMP. I've analyzed the code and I there is some hairy things to do. There are more people working on this code, so I will try to get a go before starting coding.

From late March thru May 18

Sent patch v4 to qemu-devel.

We were struggling to get the output of 'info network' exactly the same and juggling to work around the lack of a pattern when formatting VLANClientState.info_str. So we decided to add a new and clean command, and leave 'info network' as it is.

This is the v4 patch:

http://lists.gnu.org/archive/html/qemu-devel/2010-05/msg01567.html

The work on this area has begun late March, as a test if I could do something in GSoC. And here I am :-D There were a lot of interactions before the v4 patch.

Previous attempts: